This commit was manufactured by cvs2svn to create branch 'M5_32_branch'.

Sprout from master 2006-02-16 02:10:14 UTC DJ Houghton <dj> 'Bug 112856 - Bundles should be able to contribute extension point to other namespaces'
Delete:
    bundles/org.eclipse.core.boot/.classpath
    bundles/org.eclipse.core.boot/.cvsignore
    bundles/org.eclipse.core.boot/.project
    bundles/org.eclipse.core.boot/META-INF/MANIFEST.MF
    bundles/org.eclipse.core.boot/about.html
    bundles/org.eclipse.core.boot/build.properties
    bundles/org.eclipse.core.boot/plugin.properties
    bundles/org.eclipse.core.boot/readme.txt
    bundles/org.eclipse.core.contenttype/.classpath
    bundles/org.eclipse.core.contenttype/.cvsignore
    bundles/org.eclipse.core.contenttype/.options
    bundles/org.eclipse.core.contenttype/.project
    bundles/org.eclipse.core.contenttype/.settings/org.eclipse.jdt.ui.prefs
    bundles/org.eclipse.core.contenttype/META-INF/MANIFEST.MF
    bundles/org.eclipse.core.contenttype/about.html
    bundles/org.eclipse.core.contenttype/build.properties
    bundles/org.eclipse.core.contenttype/plugin.properties
    bundles/org.eclipse.core.contenttype/plugin.xml
    bundles/org.eclipse.core.contenttype/schema/contentTypes.exsd
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/Activator.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/BasicDescription.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentDescription.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentMessages.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentOSGiUtils.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentType.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeBuilder.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeCatalog.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeHandler.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeManager.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeMatcher.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeSettings.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeVisitor.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/DefaultDescription.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/FileSpec.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/IContentConstants.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/IContentTypeInfo.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ILazySource.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/LazyInputStream.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/LazyReader.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/LowLevelIOException.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/TextContentDescriber.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/Util.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/XMLContentDescriber.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/XMLRootHandler.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/messages.properties
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/BinarySignatureDescriber.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentDescriber.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentDescription.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentType.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentTypeManager.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentTypeMatcher.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentTypeSettings.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/ITextContentDescriber.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/XMLRootElementContentDescriber.java
    bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/package.html
    bundles/org.eclipse.core.expressions/.classpath
    bundles/org.eclipse.core.expressions/.cvsignore
    bundles/org.eclipse.core.expressions/.options
    bundles/org.eclipse.core.expressions/.project
    bundles/org.eclipse.core.expressions/.settings/org.eclipse.jdt.core.prefs
    bundles/org.eclipse.core.expressions/.settings/org.eclipse.jdt.ui.prefs
    bundles/org.eclipse.core.expressions/.template
    bundles/org.eclipse.core.expressions/META-INF/MANIFEST.MF
    bundles/org.eclipse.core.expressions/about.html
    bundles/org.eclipse.core.expressions/build.properties
    bundles/org.eclipse.core.expressions/buildnotes_core-expressions.html
    bundles/org.eclipse.core.expressions/component.xml
    bundles/org.eclipse.core.expressions/plugin.properties
    bundles/org.eclipse.core.expressions/plugin.xml
    bundles/org.eclipse.core.expressions/schema/expressionLanguage.exsd
    bundles/org.eclipse.core.expressions/schema/propertyTesters.exsd
    bundles/org.eclipse.core.expressions/scripts/exportplugin.xml
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/ElementHandler.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/EvaluationContext.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/EvaluationResult.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/Expression.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/ExpressionConverter.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/ExpressionInfo.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/ExpressionTagNames.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/IEvaluationContext.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/IPropertyTester.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/IVariableResolver.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/PropertyTester.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/package.html
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/AdaptExpression.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/AndExpression.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/Assert.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/AssertionFailedException.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/CompositeExpression.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/CountExpression.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/DefaultVariable.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/EnablementExpression.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/EqualsExpression.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ExpressionMessages.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ExpressionMessages.properties
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ExpressionPlugin.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ExpressionStatus.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/Expressions.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/InstanceofExpression.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/IterateExpression.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/Messages.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/NotExpression.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/OrExpression.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/Property.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/PropertyCache.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/PropertyTesterDescriptor.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ResolveExpression.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/StandardElementHandler.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/SystemTestExpression.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/TestExpression.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/TypeExtension.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/TypeExtensionManager.java
    bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/WithExpression.java
    bundles/org.eclipse.core.jobs/.classpath
    bundles/org.eclipse.core.jobs/.cvsignore
    bundles/org.eclipse.core.jobs/.options
    bundles/org.eclipse.core.jobs/.project
    bundles/org.eclipse.core.jobs/.settings/org.eclipse.jdt.core.prefs
    bundles/org.eclipse.core.jobs/.settings/org.eclipse.jdt.ui.prefs
    bundles/org.eclipse.core.jobs/META-INF/MANIFEST.MF
    bundles/org.eclipse.core.jobs/about.html
    bundles/org.eclipse.core.jobs/build.properties
    bundles/org.eclipse.core.jobs/plugin.properties
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Deadlock.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/DeadlockDetector.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ImplicitJobs.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/InternalJob.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobActivator.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobChangeEvent.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobListeners.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobManager.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobMessages.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobOSGiUtils.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobQueue.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobStatus.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/LockManager.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ObjectMap.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/OrderedLock.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Queue.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Semaphore.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/StringPool.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ThreadJob.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Worker.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/WorkerPool.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/messages.properties
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/IJobChangeEvent.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/IJobChangeListener.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/IJobManager.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/IJobStatus.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/ILock.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/ISchedulingRule.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/Job.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/JobChangeAdapter.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/LockListener.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/MultiRule.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/ProgressProvider.java
    bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/package.html
    bundles/org.eclipse.core.runtime.compatibility.registry/.classpath
    bundles/org.eclipse.core.runtime.compatibility.registry/.cvsignore
    bundles/org.eclipse.core.runtime.compatibility.registry/.project
    bundles/org.eclipse.core.runtime.compatibility.registry/.settings/org.eclipse.ltk.core.refactoring.prefs
    bundles/org.eclipse.core.runtime.compatibility.registry/META-INF/MANIFEST.MF
    bundles/org.eclipse.core.runtime.compatibility.registry/about.html
    bundles/org.eclipse.core.runtime.compatibility.registry/build.properties
    bundles/org.eclipse.core.runtime.compatibility.registry/classes/org/eclipse/core/runtime/IPluginDescriptor.class
    bundles/org.eclipse.core.runtime.compatibility.registry/fragment.properties
    bundles/org.eclipse.core.runtime.compatibility.registry/src/org/eclipse/core/internal/registry/BundleHelper.java
    bundles/org.eclipse.core.runtime.compatibility.registry/src/org/eclipse/core/internal/registry/ExtensionHandle.java
    bundles/org.eclipse.core.runtime.compatibility.registry/src/org/eclipse/core/internal/registry/ExtensionPointHandle.java
    bundles/org.eclipse.core.runtime.compatibility.registry/src/org/eclipse/core/internal/registry/RegistryCompatibilityHelper.java
    bundles/org.eclipse.core.runtime.compatibility.registry/src/org/eclipse/core/runtime/IExtension.java
    bundles/org.eclipse.core.runtime.compatibility.registry/src/org/eclipse/core/runtime/IExtensionPoint.java
    bundles/org.eclipse.core.runtime.compatibility/.classpath
    bundles/org.eclipse.core.runtime.compatibility/.cvsignore
    bundles/org.eclipse.core.runtime.compatibility/.project
    bundles/org.eclipse.core.runtime.compatibility/.settings/org.eclipse.core.resources.prefs
    bundles/org.eclipse.core.runtime.compatibility/.settings/org.eclipse.jdt.core.prefs
    bundles/org.eclipse.core.runtime.compatibility/.settings/org.eclipse.jdt.ui.prefs
    bundles/org.eclipse.core.runtime.compatibility/META-INF/MANIFEST.MF
    bundles/org.eclipse.core.runtime.compatibility/about.html
    bundles/org.eclipse.core.runtime.compatibility/build.properties
    bundles/org.eclipse.core.runtime.compatibility/plugin.properties
    bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/boot/BootLoader.java
    bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/boot/IPlatformConfiguration.java
    bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/boot/IPlatformRunnable.java
    bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/internal/boot/FeatureEntry.java
    bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/internal/boot/PlatformConfiguration.java
    bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/internal/boot/SiteEntry.java
    bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/internal/boot/SitePolicy.java
    bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/internal/model/IModel.java
    bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/internal/model/PluginMap.java
    bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/internal/model/PluginParser.java
    bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/internal/model/RegistryLoader.java
    bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/internal/model/RegistryResolver.java
    bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/ConfigurationElementModel.java
    bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/ConfigurationPropertyModel.java
    bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/ExtensionModel.java
    bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/ExtensionPointModel.java
    bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/Factory.java
    bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/LibraryModel.java
    bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/PluginDescriptorModel.java
    bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/PluginFragmentModel.java
    bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/PluginModel.java
    bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/PluginModelObject.java
    bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/PluginPrerequisiteModel.java
    bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/PluginRegistryModel.java
    bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/URLModel.java
    bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/package.html
    bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/compatibility/PluginActivator.java
    bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/CompatibilityActivator.java
    bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/DefaultPlugin.java
    bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/DevClassPathHelper.java
    bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/InternalPlatform.java
    bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/Library.java
    bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/PluginClassLoader.java
    bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/PluginDescriptor.java
    bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/PluginPrerequisite.java
    bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/PluginRegistry.java
    bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/Policy.java
    bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/messages.properties
    bundles/org.eclipse.core.runtime/.classpath
    bundles/org.eclipse.core.runtime/.cvsignore
    bundles/org.eclipse.core.runtime/.options
    bundles/org.eclipse.core.runtime/.project
    bundles/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs
    bundles/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs
    bundles/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs
    bundles/org.eclipse.core.runtime/META-INF/MANIFEST.MF
    bundles/org.eclipse.core.runtime/about.html
    bundles/org.eclipse.core.runtime/build.properties
    bundles/org.eclipse.core.runtime/component.xml
    bundles/org.eclipse.core.runtime/plugin.properties
    bundles/org.eclipse.core.runtime/plugin.xml
    bundles/org.eclipse.core.runtime/schema/adapters.exsd
    bundles/org.eclipse.core.runtime/schema/applications.exsd
    bundles/org.eclipse.core.runtime/schema/contentTypes.exsd
    bundles/org.eclipse.core.runtime/schema/preferences.exsd
    bundles/org.eclipse.core.runtime/schema/products.exsd
    bundles/org.eclipse.core.runtime/scripts/src-runtime.jardesc
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/boot/PlatformURLBaseConnection.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/boot/PlatformURLConnection.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/boot/PlatformURLHandler.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/preferences/InitLegacyPreferences.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/preferences/PreferenceForwarder.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/preferences/ProductPreferencesService.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/AdapterFactoryProxy.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/AdapterManagerListener.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/AuthorizationDatabase.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/AuthorizationHandler.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/Cipher.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/CipherInputStream.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/CipherOutputStream.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/CompatibilityHelper.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/InternalPlatform.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/Log.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/Messages.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PerformanceStatsProcessor.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformActivator.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformLogWriter.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformURLConfigConnection.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformURLConverter.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformURLFragmentConnection.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformURLMetaConnection.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformURLPluginConnection.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/Product.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/URLTool.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/messages.properties
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/ILibrary.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/ILog.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/IPlatformRunnable.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/IPluginDescriptor.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/IPluginPrerequisite.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/IPluginRegistry.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/IProduct.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/IProductProvider.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/PerformanceStats.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/Platform.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/Plugin.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/Preferences.java
    bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/package.html
    bundles/org.eclipse.core.tools/.classpath
    bundles/org.eclipse.core.tools/.cvsignore
    bundles/org.eclipse.core.tools/.options
    bundles/org.eclipse.core.tools/.project
    bundles/org.eclipse.core.tools/.settings/org.eclipse.core.resources.prefs
    bundles/org.eclipse.core.tools/.settings/org.eclipse.jdt.ui.prefs
    bundles/org.eclipse.core.tools/META-INF/MANIFEST.MF
    bundles/org.eclipse.core.tools/about.html
    bundles/org.eclipse.core.tools/about.ini
    bundles/org.eclipse.core.tools/about.mappings
    bundles/org.eclipse.core.tools/about.properties
    bundles/org.eclipse.core.tools/build.properties
    bundles/org.eclipse.core.tools/cpl-v10.html
    bundles/org.eclipse.core.tools/doc/hglegal2002.htm
    bundles/org.eclipse.core.tools/doc/ngibmcpy2002.gif
    bundles/org.eclipse.core.tools/doc/readme.html
    bundles/org.eclipse.core.tools/icons/classes.gif
    bundles/org.eclipse.core.tools/icons/clear.gif
    bundles/org.eclipse.core.tools/icons/collapseall.gif
    bundles/org.eclipse.core.tools/icons/datasheet.gif
    bundles/org.eclipse.core.tools/icons/plugin.gif
    bundles/org.eclipse.core.tools/icons/refresh.gif
    bundles/org.eclipse.core.tools/icons/req_plugins_obj.gif
    bundles/org.eclipse.core.tools/icons/reset.gif
    bundles/org.eclipse.core.tools/icons/spy.gif
    bundles/org.eclipse.core.tools/icons/trace.gif
    bundles/org.eclipse.core.tools/icons/zoom.gif
    bundles/org.eclipse.core.tools/plugin.xml
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/AbstractCopySelectionAction.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/AbstractTreeContentProvider.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/BaseTextView.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/ByteUtil.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/ClearTextAction.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/CollapseAllAction.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/CopyStructuredSelectionAction.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/CopyTextSelectionAction.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/CoreToolsPlugin.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/DeepSize.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/ErrorUtil.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/GlobalAction.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/IFlattable.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/ISorter.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/ITreeNodeVisitor.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/Messages.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/Policy.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/SelectAllAction.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/SpyView.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/TableSelectionProviderDecorator.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/TableWithTotalView.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/TreeContentProviderNode.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/TreeSelectionProviderDecorator.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/TreeTextOperationTarget.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/messages.properties
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/AbstractDumper.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/Dump.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/DumpContentsView.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/DumpException.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/DumpSummaryView.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/DumpTool.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/DumperFactory.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/IDump.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/IDumper.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/IStringDumpingStrategy.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/MetadataPerspective.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/MetadataTreeContentProvider.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/MetadataTreeView.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/MeteredInputStream.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/MultiStrategyDumper.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/PartialDumpException.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/StateDumper.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/ConvertMessageBundleAction.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/GotoResourceAction.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/IntegerMap.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/MessageBundleRefactoring.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/NLSFileChange.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/NLSPlugin.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/PropertyFileConverter.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/RemoveUnusedMessages.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/RemoveUnusedMessagesAction.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/ActivePluginsView.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/ActivePluginsViewContentProvider.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/ActivePluginsViewLabelProvider.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/ActivePluginsViewSorter.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/ContentTypePropertySource.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/ContentTypeView.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/EclipsePreferencesView.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/EventsSorter.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/EventsView.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/LoadedClassesView.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/LoadedClassesViewContentProvider.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/LoadedClassesViewLabelProvider.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/LoadedClassesViewSorter.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/PluginDataSheetView.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/PluginDependencyGraphNode.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/PluginDependencyPerspective.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/PluginDependencyView.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/PluginListView.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/PreferenceStatsView.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/RuntimeSpyPerspective.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/StackTraceView.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/VMClassInfo.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/VMClassloaderInfo.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/search/FindUnusedMembers.java
    bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/search/FindUnusedMembersAction.java
    features/org.eclipse.core.tools-feature/.project
    features/org.eclipse.core.tools-feature/build.properties
    features/org.eclipse.core.tools-feature/cpl-v10.html
    features/org.eclipse.core.tools-feature/eclipse_update_120.jpg
    features/org.eclipse.core.tools-feature/feature.properties
    features/org.eclipse.core.tools-feature/feature.xml
    features/org.eclipse.core.tools-feature/license.html
    tests/org.eclipse.core.expressions.tests/.classpath
    tests/org.eclipse.core.expressions.tests/.cvsignore
    tests/org.eclipse.core.expressions.tests/.project
    tests/org.eclipse.core.expressions.tests/.settings/org.eclipse.jdt.core.prefs
    tests/org.eclipse.core.expressions.tests/.settings/org.eclipse.jdt.ui.prefs
    tests/org.eclipse.core.expressions.tests/.template
    tests/org.eclipse.core.expressions.tests/about.html
    tests/org.eclipse.core.expressions.tests/build.properties
    tests/org.eclipse.core.expressions.tests/plugin.properties
    tests/org.eclipse.core.expressions.tests/plugin.xml
    tests/org.eclipse.core.expressions.tests/schema/testParticipants.exsd
    tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/A.java
    tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/A_TypeExtender.java
    tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/A_TypeExtender2.java
    tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/A_TypeExtender3.java
    tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/Adaptee.java
    tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/Adapter.java
    tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/AllTests.java
    tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/B.java
    tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/B_TypeExtender.java
    tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/ExpressionInfoTests.java
    tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/ExpressionTestPlugin.java
    tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/ExpressionTests.java
    tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/I.java
    tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/I_TypeExtender.java
    tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/PropertyTesterTests.java
    tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/TestAdapterFactory.java
    tests/org.eclipse.core.expressions.tests/test.xml
    tests/org.eclipse.core.tests.harness/.classpath
    tests/org.eclipse.core.tests.harness/.cvsignore
    tests/org.eclipse.core.tests.harness/.project
    tests/org.eclipse.core.tests.harness/.settings/org.eclipse.core.resources.prefs
    tests/org.eclipse.core.tests.harness/.settings/org.eclipse.jdt.core.prefs
    tests/org.eclipse.core.tests.harness/.settings/org.eclipse.jdt.ui.prefs
    tests/org.eclipse.core.tests.harness/META-INF/MANIFEST.MF
    tests/org.eclipse.core.tests.harness/about.html
    tests/org.eclipse.core.tests.harness/build-tests.xml
    tests/org.eclipse.core.tests.harness/build.properties
    tests/org.eclipse.core.tests.harness/readme.txt
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/BundleTestingHelper.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/CancelingProgressMonitor.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/CoreTest.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/EclipseTestHarnessApplication.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/ExampleTest.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/FileSystemComparator.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/FileSystemHelper.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/FussyProgressMonitor.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/LoggingPerformanceTestResult.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/PerformanceTestResult.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/PerformanceTestRunner.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/PerformanceTimer.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/TestBarrier.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/TestJob.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/TestProgressMonitor.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/TestRegistryChangeListener.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/ConfigurationSessionTestSuite.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/PerformanceSessionTestSuite.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/ProcessController.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/RemoteAssertionFailedError.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/RemoteTestException.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/SessionTestRunner.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/SessionTestSuite.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/Setup.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/SetupManager.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/TestDescriptor.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/UIPerformanceSessionTestSuite.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/WorkspaceSessionTestSuite.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/MultipleRunsTest.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/MultipleRunsTest2.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/SameSessionTest.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/SampleCrashTest.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/SampleSessionTest.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/SampleTests.java
    tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/UISampleSessionTest.java
diff --git a/bundles/org.eclipse.core.boot/.classpath b/bundles/org.eclipse.core.boot/.classpath
deleted file mode 100644
index ddf0f40..0000000
--- a/bundles/org.eclipse.core.boot/.classpath
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/bundles/org.eclipse.core.boot/.cvsignore b/bundles/org.eclipse.core.boot/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/bundles/org.eclipse.core.boot/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/bundles/org.eclipse.core.boot/.project b/bundles/org.eclipse.core.boot/.project
deleted file mode 100644
index cd0e722..0000000
--- a/bundles/org.eclipse.core.boot/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.core.boot</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.core.boot/META-INF/MANIFEST.MF b/bundles/org.eclipse.core.boot/META-INF/MANIFEST.MF
deleted file mode 100644
index 01c3d02..0000000
--- a/bundles/org.eclipse.core.boot/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,8 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.core.boot
-Bundle-Version: 3.1.0.qualifier
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Eclipse-AutoStart: true
diff --git a/bundles/org.eclipse.core.boot/about.html b/bundles/org.eclipse.core.boot/about.html
deleted file mode 100644
index 6f6b96c..0000000
--- a/bundles/org.eclipse.core.boot/about.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<title>About</title>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.boot/build.properties b/bundles/org.eclipse.core.boot/build.properties
deleted file mode 100644
index fea56fc..0000000
--- a/bundles/org.eclipse.core.boot/build.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2004 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = .,\
-               plugin.properties,\
-               about.html,\
-               META-INF/,\
-               readme.txt
-src.includes=about.html
diff --git a/bundles/org.eclipse.core.boot/plugin.properties b/bundles/org.eclipse.core.boot/plugin.properties
deleted file mode 100644
index f91a5c2..0000000
--- a/bundles/org.eclipse.core.boot/plugin.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2003 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# Boot strings
-pluginName = Core Boot
-providerName = Eclipse.org
diff --git a/bundles/org.eclipse.core.boot/readme.txt b/bundles/org.eclipse.core.boot/readme.txt
deleted file mode 100644
index 2d2cf7b..0000000
--- a/bundles/org.eclipse.core.boot/readme.txt
+++ /dev/null
@@ -1 +0,0 @@
-The features provided by this plug-in moved to org.eclipse.core.runtime, org.eclipse.core.runtime.compatiblilty or org.eclipse.update.configurator.
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.contenttype/.classpath b/bundles/org.eclipse.core.contenttype/.classpath
deleted file mode 100644
index 751c8f2..0000000
--- a/bundles/org.eclipse.core.contenttype/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/bundles/org.eclipse.core.contenttype/.cvsignore b/bundles/org.eclipse.core.contenttype/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/bundles/org.eclipse.core.contenttype/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/bundles/org.eclipse.core.contenttype/.options b/bundles/org.eclipse.core.contenttype/.options
deleted file mode 100644
index c36e0d8..0000000
--- a/bundles/org.eclipse.core.contenttype/.options
+++ /dev/null
@@ -1,5 +0,0 @@
-# Debugging options for the org.eclipse.core.contenttype plugin
-
-# Turn on debugging for content types
-org.eclipse.core.contenttype/debug=false
-
diff --git a/bundles/org.eclipse.core.contenttype/.project b/bundles/org.eclipse.core.contenttype/.project
deleted file mode 100644
index 9c05d5c..0000000
--- a/bundles/org.eclipse.core.contenttype/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.core.contenttype</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.core.contenttype/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.core.contenttype/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index ec50f8d..0000000
--- a/bundles/org.eclipse.core.contenttype/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,6 +0,0 @@
-#Fri Jan 06 15:50:24 EST 2006
-eclipse.preferences.version=1
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=;
-org.eclipse.jdt.ui.ondemandthreshold=3
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return Returns the ${bare_field_name}.\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} The ${bare_field_name} to set.\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\r\n * Copyright (c) ${year} IBM Corporation and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n *\r\n * Contributors\:\r\n *     IBM Corporation - initial API and implementation\r\n ******************************************************************************/\r\n</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @since 3.2\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="New classes and interfaces" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\r\n * Copyright (c) 2006 IBM Corporation and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n * \r\n * Contributors\:\r\n *     IBM Corporation - initial API and implementation\r\n *******************************************************************************/\r\n${package_declaration}\r\n\r\n/**\r\n * \r\n */\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">fail("4.99", ${exception_var});</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
diff --git a/bundles/org.eclipse.core.contenttype/META-INF/MANIFEST.MF b/bundles/org.eclipse.core.contenttype/META-INF/MANIFEST.MF
deleted file mode 100644
index 03c92a9..0000000
--- a/bundles/org.eclipse.core.contenttype/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,15 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.core.contenttype; singleton:=true
-Bundle-Version: 3.2.0.qualifier
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Require-Bundle: org.eclipse.equinox.preferences,
- org.eclipse.equinox.registry,
- org.eclipse.equinox.common,
- system.bundle
-Export-Package: org.eclipse.core.internal.content;x-internal:=true,
- org.eclipse.core.runtime.content
-Bundle-Activator: org.eclipse.core.internal.content.Activator
-Eclipse-LazyStart: true
diff --git a/bundles/org.eclipse.core.contenttype/about.html b/bundles/org.eclipse.core.contenttype/about.html
deleted file mode 100644
index cdc1e50..0000000
--- a/bundles/org.eclipse.core.contenttype/about.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<title>About</title>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>September 26, 2005</p> 
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html" target="_blank">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
-
-<small>Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.</small>
-
-</body>
-</html>
diff --git a/bundles/org.eclipse.core.contenttype/build.properties b/bundles/org.eclipse.core.contenttype/build.properties
deleted file mode 100644
index 38e4647..0000000
--- a/bundles/org.eclipse.core.contenttype/build.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-###############################################################################
-# Copyright (c) 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               plugin.xml,\
-               .options,\
-               plugin.properties,\
-               about.html
-src.includes = about.html
diff --git a/bundles/org.eclipse.core.contenttype/plugin.properties b/bundles/org.eclipse.core.contenttype/plugin.properties
deleted file mode 100644
index c54e7d8..0000000
--- a/bundles/org.eclipse.core.contenttype/plugin.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################
-# Copyright (c) 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-pluginName = Eclipse Content Mechanism
-providerName = Eclipse.org
-textContentTypeName = Text
-xmlContentTypeName = XML
-propertiesContentTypeName = Properties
-contentTypesName = Content Types
diff --git a/bundles/org.eclipse.core.contenttype/plugin.xml b/bundles/org.eclipse.core.contenttype/plugin.xml
deleted file mode 100644
index 3a85336..0000000
--- a/bundles/org.eclipse.core.contenttype/plugin.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin>
-   <extension-point id="contentTypes" name="%contentTypesName" schema="schema/contentTypes.exsd"/>
-   
-	<extension point="org.eclipse.core.contenttype.contentTypes">
-		<content-type id="org.eclipse.core.runtime.text" name="%textContentTypeName" 
-			priority="high"
-			file-extensions="txt">
-			<describer class="org.eclipse.core.internal.content.TextContentDescriber"/>			
-			<property name="org.eclipse.core.runtime.bom"/>
-			<property name="org.eclipse.core.runtime.charset"/>
-		</content-type>
-		<content-type id="org.eclipse.core.runtime.xml" name="%xmlContentTypeName" 	
-			base-type="org.eclipse.core.runtime.text"
-			priority="high"
-			file-extensions="xml">			
-			<property name="org.eclipse.core.runtime.charset" default="UTF-8"/>
-			<describer class="org.eclipse.core.internal.content.XMLContentDescriber"/>
-		</content-type>
-		<!-- a placeholder for setups where JDT's official type is not available -->			
-		<content-type id="org.eclipse.core.runtime.properties" name="%propertiesContentTypeName" 
-			base-type="org.eclipse.core.runtime.text"
-			alias-for="org.eclipse.jdt.core.javaProperties"
-			file-extensions="properties">
-			<property name="org.eclipse.core.runtime.charset" default="ISO-8859-1"/>
-		</content-type>			
-	</extension>		 
-</plugin>
diff --git a/bundles/org.eclipse.core.contenttype/schema/contentTypes.exsd b/bundles/org.eclipse.core.contenttype/schema/contentTypes.exsd
deleted file mode 100644
index a5289ae..0000000
--- a/bundles/org.eclipse.core.contenttype/schema/contentTypes.exsd
+++ /dev/null
@@ -1,360 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.core.runtime">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.core.runtime" id="contentTypes" name="Content Types"/>
-      </appInfo>
-      <documentation>
-         The content types extension point allows plug-ins to contribute to the platform content type catalog. There are two forms of contributions: &lt;cite&gt;content types&lt;/cite&gt; and &lt;cite&gt;file associations&lt;/cite&gt;.
-&lt;ul&gt;
-&lt;li&gt;
-a content type represents a file format and its naming conventions. Content types can be defined from scratch, or can inherit from existing ones, specializing them. Also, a content type can be made into an alias for another content type (see the &lt;code&gt;alias-for&lt;/code&gt; attribute). When this feature is used:
-  &lt;ul&gt;&lt;li&gt;if the target is absent, the alias content type is processed 
-  as a normal content type;&lt;/li&gt;
-  &lt;li&gt;if the target is present, all references to the alias type are automatically
-  transformed into references to the target type, and the alias type cannot be 
-  accessed nor is exposed through the API.&lt;/li&gt;&lt;/ul&gt;
-&lt;/li&gt;
-&lt;li&gt;
-a file association extends an existing content type by associating new file names and/or extensions to it&lt;/li&gt;
-&lt;/ul&gt;
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <sequence>
-            <element ref="content-type" minOccurs="0" maxOccurs="unbounded"/>
-            <element ref="file-association" minOccurs="0" maxOccurs="unbounded"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  a fully qualified identifier of the target extension point
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  an optional identifier of the extension instance
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  an optional name of the extension instance
-               </documentation>
-               <appInfo>
-                  <meta.attribute translatable="true"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="content-type">
-      <complexType>
-         <sequence>
-            <element ref="describer" minOccurs="0" maxOccurs="1"/>
-            <element ref="property" minOccurs="0" maxOccurs="unbounded"/>
-         </sequence>
-         <attribute name="id" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the identifier for this content type (either a simple id unique for content types within the extension namespace, or a fully qualified id). The token cannot contain whitespace
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="base-type" type="string">
-            <annotation>
-               <documentation>
-                  the fully qualified identifier of this content type&apos;s base type. This content type will inherit its base type&apos;s file associations, content describer and default charset, unless they are redefined
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the human-readable name of this content type
-               </documentation>
-               <appInfo>
-                  <meta.attribute translatable="true"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-         <attribute name="file-extensions" type="string">
-            <annotation>
-               <documentation>
-                  a comma-separated list of file extensions to be associated with this content type
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="file-names" type="string">
-            <annotation>
-               <documentation>
-                  a comma-separated list of file names to be associated with this content type
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="priority" use="default" value="normal">
-            <annotation>
-               <documentation>
-                  the priority for this content type. Priorities are used to solve conflicts (when two content types are associated to the same file name/extension)
-               </documentation>
-            </annotation>
-            <simpleType>
-               <restriction base="string">
-                  <enumeration value="low">
-                  </enumeration>
-                  <enumeration value="normal">
-                  </enumeration>
-                  <enumeration value="high">
-                  </enumeration>
-               </restriction>
-            </simpleType>
-         </attribute>
-         <attribute name="default-charset" type="string">
-            <annotation>
-               <documentation>
-                  the default charset for this content type, or an empty string, if this content type should not have a default charset even if the parent has one. This is a convenience attribute, equivalent to specifying:
-&lt;pre&gt;
-  &lt;content-type&gt;
-    &lt;property name=&quot;org.eclipse.core.runtime.charset&quot; default=&quot;charset-name&quot;/&gt;
-  &lt;/content-type&gt;
-&lt;/pre&gt;
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="describer" type="string">
-            <annotation>
-               <documentation>
-                  the fully qualified name of a class that implements &lt;samp&gt;org.eclipse.core.runtime.content.IContentDescriber&lt;/samp&gt; or &lt;samp&gt;org.eclipse.core.runtime.content.ITextContentDescriber&lt;/samp&gt;, or an empty string, if this content type should not have a describer even if the parent has one
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-         <attribute name="alias-for" type="string">
-            <annotation>
-               <documentation>
-                  the fully qualified identifier of the content type this content type is an alias for
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="describer">
-      <annotation>
-         <documentation>
-            If the describer attribute is used in the content-type element, this element is ignored.
-         </documentation>
-      </annotation>
-      <complexType>
-         <sequence>
-            <element ref="parameter" minOccurs="0" maxOccurs="unbounded"/>
-         </sequence>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the fully qualified name of a class that implements &lt;samp&gt;org.eclipse.core.runtime.content.IContentDescriber&lt;/samp&gt; or &lt;samp&gt;org.eclipse.core.runtime.content.ITextContentDescriber&lt;/samp&gt;, or an empty string, if this content type should not have a describer even if the parent has one
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.core.runtime.content.IContentDescriber"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-         <attribute name="plugin" type="string">
-            <annotation>
-               <documentation>
-                  the id for the plug-in providing the describer class
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="file-association">
-      <complexType>
-         <attribute name="content-type" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the fully qualified identifier for the content type this file association contributes to
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="file-names" type="string">
-            <annotation>
-               <documentation>
-                  a comma-separated list of file names to be associated with the target content type
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="file-extensions" type="string">
-            <annotation>
-               <documentation>
-                  a comma-separated list of file extensions to be associated with the target content type
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="parameter">
-      <complexType>
-         <attribute name="name" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the name of this parameter made available to instances of the specified content describer class
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="value" type="string" use="required">
-            <annotation>
-               <documentation>
-                  an arbitrary value associated with the given name and made available to instances of the specified content describer class
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="property">
-      <annotation>
-         <documentation>
-            Declares a property related to this content type, optionally assigning a default value. See &lt;samp&gt;org.eclipse.core.runtime.content.IContentDescription&lt;/samp&gt; for more information on properties.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="name" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the name of the property. If the property is being overriden and has been originally defined in a different namespace, a fully qualified property name must be used
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="default" type="string">
-            <annotation>
-               <documentation>
-                  the default value of the property, or an empty string, if this content type should not have a default value for this property even if a parent has one
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="since"/>
-      </appInfo>
-      <documentation>
-         3.0
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
-         Following is an example of a XML-based content type declaration using &lt;code&gt;org.eclipse.core.runtime.content.XMLRootElementContentDescriber&lt;/code&gt;, 
-a built-in describer: 
-&lt;p&gt;
-&lt;pre&gt;
-   &lt;extension point=&quot;org.eclipse.core.runtime.contentTypes&quot;&gt; 
-      &lt;content-type id=&quot;ABC&quot;
-       base-type=&quot;org.eclipse.core.runtime.xml&quot;      
-       file-extensions=&quot;a,b,c&quot;&gt;
-       &lt;describer class=&quot;org.eclipse.core.runtime.content.XMLRootElementContentDescriber&quot;&gt;
-        &lt;parameter name=&quot;element&quot; value=&quot;abc&quot;/&gt;
-       &lt;/describer&gt;
-      &lt;/content-type&gt; 
-   &lt;/extension&gt; 
-&lt;/pre&gt;
-&lt;/p&gt;
-Here is an example of a simple text-based content type that has a specific file extension:
-&lt;p&gt;
-&lt;pre&gt;
-   &lt;extension point=&quot;org.eclipse.core.runtime.contentTypes&quot;&gt; 
-      &lt;content-type id=&quot;MyText&quot;
-       base-type=&quot;org.eclipse.core.runtime.text&quot;
-       file-extensions=&quot;mytxt&quot;/&gt;
-   &lt;/extension&gt; 
-&lt;/pre&gt;
-&lt;/p&gt;
-When there is need to associate new file names/extensions to an existing content type (as opposed to defining a new content type), a plug-in can contribute a file association as seen below. This has the effect of enhancing the definition of the text content type to include files with names following the &quot;*.mytxt&quot; pattern.
-&lt;p&gt;
-&lt;pre&gt;
-   &lt;extension point=&quot;org.eclipse.core.runtime.contentTypes&quot;&gt; 
-      &lt;file-association 
-       content-type=&quot;org.eclipse.core.runtime.text&quot;
-       file-extensions=&quot;mytxt&quot;/&gt;
-   &lt;/extension&gt; 
-&lt;/pre&gt;
-&lt;/p&gt;
-Here is an example of a content type that defines properties:
-&lt;pre&gt;
-   &lt;extension point=&quot;org.eclipse.core.runtime.contentTypes&quot;&gt; 
-      &lt;content-type id=&quot;MyContentType&quot;
-       file-extensions=&quot;dat&quot;&gt;
-         &lt;property name=&quot;file-format&quot; value=&quot;1&quot;/&gt;
-      &lt;/content-type&gt;
-   &lt;/extension&gt; 
-&lt;/pre&gt;
-&lt;/p&gt;
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         The value of the class attribute in the describer element must represent an 
-implementor of 
-&lt;samp&gt;org.eclipse.core.runtime.content.IContentDescriber&lt;/samp&gt; or &lt;samp&gt;org.eclipse.core.runtime.content.ITextContentDescriber&lt;/samp&gt;.
-
-&lt;samp&gt;org.eclipse.core.runtime.content.IContentDescription&lt;/samp&gt; objects returned by the &lt;samp&gt;org.eclipse.core.runtime.content&lt;/samp&gt; API
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         &lt;p&gt;The org.eclipse.core.runtime plug-in provides the following content types:&lt;ul&gt;
-&lt;li&gt;org.eclipse.core.runtime.text&lt;/li&gt;
-&lt;li&gt;org.eclipse.core.runtime.xml&lt;/li&gt;
-&lt;/ul&gt;
-Other plug-ins in the platform contribute other content types.
-&lt;/p&gt;
-&lt;p&gt;
-Also, the org.eclipse.core.runtime plug-in provides ready-to-use implementations of content describers:&lt;ul&gt;
-&lt;li&gt;org.eclipse.core.runtime.content.XMLRootElementContentDescriber&lt;/li&gt;
-&lt;li&gt;org.eclipse.core.runtime.content.BinarySignatureDescriber&lt;/li&gt;
-&lt;/ul&gt;
-&lt;/p&gt;
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         Copyright (c) 2004, 2005 IBM Corporation and others.&lt;br&gt;
-All rights reserved. This program and the accompanying materials are made 
-available under the terms of the Eclipse Public License v1.0 which 
-accompanies 
-this distribution, and is available at 
-&lt;a 
-href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
-      </documentation>
-   </annotation>
-
-</schema>
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/Activator.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/Activator.java
deleted file mode 100644
index ad83123..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/Activator.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.content;
-
-import java.util.Hashtable;
-import org.eclipse.core.runtime.content.IContentTypeManager;
-import org.osgi.framework.*;
-
-/**
- * The runtime contents plugin class.
- */
-public class Activator implements BundleActivator {
-
-	/**
-	 * The bundle associated this plug-in
-	 */
-	private static BundleContext bundleContext;
-
-	/**
-	 * This plugin provides a JobManager service.
-	 */
-	private ServiceRegistration contentManagerService = null;
-
-	/**
-	 * This method is called upon plug-in activation
-	 */
-	public void start(BundleContext context) throws Exception {
-		bundleContext = context;
-		ContentTypeManager.startup();
-		registerServices();
-	}
-
-	/**
-	 * This method is called when the plug-in is stopped
-	 */
-	public void stop(BundleContext context) throws Exception {
-		unregisterServices();
-		ContentTypeManager.shutdown();
-		ContentOSGiUtils.getDefault().closeServices();
-		bundleContext = null;
-	}
-
-	static BundleContext getContext() {
-		return bundleContext;
-	}
-
-	private void registerServices() {
-		// ContentTypeManager should be started first
-		contentManagerService = bundleContext.registerService(IContentTypeManager.class.getName(), ContentTypeManager.getInstance(), new Hashtable());
-	}
-
-	private void unregisterServices() {
-		if (contentManagerService != null) {
-			contentManagerService.unregister();
-			contentManagerService = null;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/BasicDescription.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/BasicDescription.java
deleted file mode 100644
index cbcbc8d..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/BasicDescription.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.content;
-
-import org.eclipse.core.runtime.content.IContentDescription;
-import org.eclipse.core.runtime.content.IContentType;
-
-public abstract class BasicDescription implements IContentDescription {
-
-	protected IContentTypeInfo contentTypeInfo;
-
-	public BasicDescription(IContentTypeInfo contentTypeInfo) {
-		this.contentTypeInfo = contentTypeInfo;
-	}
-
-	/**
-	 * @see IContentDescription
-	 */
-	public IContentType getContentType() {
-		ContentType contentType = contentTypeInfo.getContentType();
-		//TODO performance: potential creation of garbage		
-		return new ContentTypeHandler(contentType, contentType.getCatalog().getGeneration());
-	}
-
-	public IContentTypeInfo getContentTypeInfo() {
-		return contentTypeInfo;
-	}
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentDescription.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentDescription.java
deleted file mode 100644
index 14f6109..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentDescription.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.content;
-
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.core.runtime.content.IContentDescription;
-
-public final class ContentDescription extends BasicDescription {
-
-	private static final String CHARSET_UTF_16 = "UTF-16"; //$NON-NLS-1$
-	private static final String CHARSET_UTF_8 = "UTF-8"; //$NON-NLS-1$
-	private static final byte FLAG_ALL_OPTIONS = 0x01;
-	private static final byte FLAG_IMMUTABLE = 0x02;
-	private byte flags;
-	private Object keys;
-	private Object values;
-
-	public ContentDescription(QualifiedName[] requested, IContentTypeInfo contentTypeInfo) {
-		super(contentTypeInfo);
-		if (requested == IContentDescription.ALL) {
-			flags |= FLAG_ALL_OPTIONS;
-			return;
-		}
-		if (requested.length > 1) {
-			keys = requested;
-			values = new Object[requested.length];
-		} else if (requested.length == 1)
-			keys = requested[0];
-		// if requested.length == 0 then keys == null (no options to describe!)
-	}
-
-	private void assertMutable() {
-		if ((flags & FLAG_IMMUTABLE) != 0)
-			throw new IllegalStateException("Content description is immutable"); //$NON-NLS-1$
-	}
-
-	/**
-	 * @see IContentDescription
-	 */
-	public String getCharset() {
-		byte[] bom = (byte[]) getProperty(BYTE_ORDER_MARK);
-		if (bom == BOM_UTF_8)
-			return CHARSET_UTF_8;
-		else if (bom == BOM_UTF_16BE || bom == BOM_UTF_16LE)
-			// UTF-16 will properly recognize the BOM
-			return CHARSET_UTF_16;
-		return (String) getProperty(CHARSET);
-	}
-
-	private Object getDescribedProperty(QualifiedName key) {
-		// no values have been set
-		if (values == null)
-			return null;
-		// a single property may have been set
-		if (keys instanceof QualifiedName)
-			return keys.equals(key) ? values : null;
-		// multiple properties may have been set
-		QualifiedName[] tmpKeys = (QualifiedName[]) this.keys;
-		for (int i = 0; i < tmpKeys.length; i++)
-			if (tmpKeys[i].equals(key))
-				return ((Object[]) values)[i];
-		return null;
-	}
-
-	/**
-	 * @see IContentDescription
-	 */
-	public Object getProperty(QualifiedName key) {
-		Object describedProperty = getDescribedProperty(key);
-		if (describedProperty != null)
-			return describedProperty;
-		return contentTypeInfo.getDefaultProperty(key);
-	}
-
-	/**
-	 * @see IContentDescription
-	 */
-	public boolean isRequested(QualifiedName propertyKey) {
-		// all options requested
-		if ((flags & FLAG_ALL_OPTIONS) != 0)
-			return true;
-		// no options requested
-		if (keys == null)
-			return false;
-		// a single option requested
-		if (keys instanceof QualifiedName)
-			return keys.equals(propertyKey);
-		// some (but not all) options requested
-		QualifiedName[] tmpKeys = (QualifiedName[]) this.keys;
-		for (int i = 0; i < tmpKeys.length; i++)
-			if (tmpKeys[i].equals(propertyKey))
-				return true;
-		return false;
-	}
-
-	boolean isSet() {
-		if (keys == null || values == null)
-			return false;
-		if (keys instanceof QualifiedName)
-			return true;
-		Object[] tmpValues = (Object[]) this.values;
-		for (int i = 0; i < tmpValues.length; i++)
-			if (tmpValues[i] != null)
-				return true;
-		return false;
-	}
-
-	public void markImmutable() {
-		assertMutable();
-		flags |= FLAG_IMMUTABLE;
-	}
-
-	/** Overrides content type info object. */
-	void setContentTypeInfo(IContentTypeInfo info) {
-		this.contentTypeInfo = info;
-	}
-
-	/**
-	 * @see IContentDescription
-	 */
-	public void setProperty(QualifiedName newKey, Object newValue) {
-		assertMutable();
-		if (keys == null) {
-			if ((flags & FLAG_ALL_OPTIONS) != 0) {
-				keys = newKey;
-				values = newValue;
-			}
-			return;
-		}
-		if (keys.equals(newKey)) {
-			values = newValue;
-			return;
-		}
-		if (keys instanceof QualifiedName) {
-			if ((flags & FLAG_ALL_OPTIONS) != 0) {
-				keys = new QualifiedName[] {(QualifiedName) keys, newKey};
-				values = new Object[] {values, newValue};
-			}
-			return;
-		}
-		QualifiedName[] tmpKeys = (QualifiedName[]) this.keys;
-		for (int i = 0; i < tmpKeys.length; i++)
-			if (tmpKeys[i].equals(newKey)) {
-				((Object[]) values)[i] = newValue;
-				return;
-			}
-		if ((flags & FLAG_ALL_OPTIONS) == 0)
-			return;
-		// need to resize arrays 		
-		int currentSize = tmpKeys.length;
-		tmpKeys = new QualifiedName[currentSize + 1];
-		System.arraycopy(keys, 0, tmpKeys, 0, currentSize);
-		Object[] tmpValues = new Object[currentSize + 1];
-		System.arraycopy(values, 0, tmpValues, 0, currentSize);
-		tmpKeys[tmpKeys.length - 1] = newKey;
-		tmpValues[tmpValues.length - 1] = newValue;
-		keys = tmpKeys;
-		values = tmpValues;
-	}
-
-	public String toString() {
-		StringBuffer result = new StringBuffer("{"); //$NON-NLS-1$
-		if (keys != null)
-			if (keys instanceof QualifiedName) {
-				if (values != null)
-					result.append(keys + "=" + values); //$NON-NLS-1$
-			} else {
-				QualifiedName[] tmpKeys = (QualifiedName[]) keys;
-				Object[] tmpValues = (Object[]) values;
-				boolean any = false;
-				for (int i = 0; i < tmpKeys.length; i++)
-					if (tmpValues[i] != null) {
-						result.append(tmpKeys[i] + "=" + tmpValues[i] + ","); //$NON-NLS-1$ //$NON-NLS-2$
-						any = true;
-					}
-				if (any)
-					result.deleteCharAt(result.length() - 1);
-			}
-		result.append("} : "); //$NON-NLS-1$
-		result.append(contentTypeInfo.getContentType());
-		return result.toString();
-	}
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentMessages.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentMessages.java
deleted file mode 100644
index 19a4775..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentMessages.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2005 IBM Corporation and others. All rights reserved.   This
- * program and the accompanying materials are made available under the terms of
- * the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: 
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.core.internal.content;
-
-import java.util.Date;
-import org.eclipse.osgi.util.NLS;
-
-// Runtime plugin message catalog
-public class ContentMessages extends NLS {
-
-	/**
-	 * The unique identifier constant of this plug-in.
-	 */
-	public static final String OWNER_NAME = "org.eclipse.core.contenttype"; //$NON-NLS-1$
-
-	private static final String BUNDLE_NAME = "org.eclipse.core.internal.content.messages"; //$NON-NLS-1$
-
-	// Content type manager
-	public static String content_badInitializationData;
-	public static String content_errorReadingContents;
-	public static String content_errorLoadingSettings;
-	public static String content_errorSavingSettings;
-	public static String content_invalidContentDescriber;
-	public static String content_invalidProperty;
-	public static String content_missingIdentifier;
-	public static String content_missingName;
-	public static String content_parserConfiguration;
-
-	static {
-		// load message values from bundle file
-		reloadMessages();
-	}
-
-	public static void reloadMessages() {
-		NLS.initializeMessages(BUNDLE_NAME, ContentMessages.class);
-	}
-
-	/**
-	 * Print a debug message to the console. 
-	 * Pre-pend the message with the current date and the name of the current thread.
-	 */
-	public static void message(String message) {
-		StringBuffer buffer = new StringBuffer();
-		buffer.append(new Date(System.currentTimeMillis()));
-		buffer.append(" - ["); //$NON-NLS-1$
-		buffer.append(Thread.currentThread().getName());
-		buffer.append("] "); //$NON-NLS-1$
-		buffer.append(message);
-		System.out.println(buffer.toString());
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentOSGiUtils.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentOSGiUtils.java
deleted file mode 100644
index 5caa7ec..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentOSGiUtils.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.content;
-
-import javax.xml.parsers.SAXParserFactory;
-import org.eclipse.osgi.service.debug.DebugOptions;
-import org.osgi.framework.BundleContext;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * This class contains a set of OSGi-related helper methods for the Content plugin.
- * The closeServices() method should be called before the plugin is stopped. 
- * 
- * @since org.eclipse.core.contenttype 3.2
- */
-public class ContentOSGiUtils {
-	private ServiceTracker parserTracker = null;
-	private ServiceTracker debugTracker = null;
-
-	private static final ContentOSGiUtils singleton = new ContentOSGiUtils();
-
-	public static ContentOSGiUtils getDefault() {
-		return singleton;
-	}
-
-	/**
-	 * Private constructor to block instance creation.
-	 */
-	private ContentOSGiUtils() {
-		super();
-		initServices();
-	}
-
-	private void initServices() {
-		BundleContext context = Activator.getContext();
-		if (context == null) {
-			ContentMessages.message("ContentOSGiUtils called before plugin started"); //$NON-NLS-1$
-			return;
-		}
-
-		parserTracker = new ServiceTracker(context, "javax.xml.parsers.SAXParserFactory", null); //$NON-NLS-1$
-		parserTracker.open();
-
-		debugTracker = new ServiceTracker(context, DebugOptions.class.getName(), null);
-		debugTracker.open();
-	}
-
-	void closeServices() {
-		if (parserTracker != null) {
-			parserTracker.close();
-			parserTracker = null;
-		}
-		if (debugTracker != null) {
-			debugTracker.close();
-			debugTracker = null;
-		}
-	}
-
-	public SAXParserFactory getFactory() {
-		if (parserTracker == null) {
-			ContentMessages.message("SAX tracker is not set"); //$NON-NLS-1$
-			return null;
-		}
-		SAXParserFactory theFactory = (SAXParserFactory) parserTracker.getService();
-		if (theFactory != null)
-			theFactory.setNamespaceAware(true);
-		return theFactory;
-	}
-
-	public boolean getBooleanDebugOption(String option, boolean defaultValue) {
-		if (debugTracker == null) {
-			ContentMessages.message("Debug tracker is not set"); //$NON-NLS-1$
-			return defaultValue;
-		}
-		DebugOptions options = (DebugOptions) debugTracker.getService();
-		if (options != null) {
-			String value = options.getOption(option);
-			if (value != null)
-				return value.equalsIgnoreCase("true"); //$NON-NLS-1$
-		}
-		return defaultValue;
-	}
-
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentType.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentType.java
deleted file mode 100644
index e1b4871..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentType.java
+++ /dev/null
@@ -1,632 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.content;
-
-import java.io.*;
-import java.util.*;
-import org.eclipse.core.internal.runtime.RuntimeLog;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.content.*;
-import org.eclipse.core.runtime.preferences.IScopeContext;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.service.prefs.BackingStoreException;
-import org.osgi.service.prefs.Preferences;
-
-/**
- * @see IContentType
- */
-public final class ContentType implements IContentType, IContentTypeInfo {
-
-	/* A placeholder for missing/invalid binary/text describers. */
-	private class InvalidDescriber implements IContentDescriber, ITextContentDescriber {
-		public int describe(InputStream contents, IContentDescription description) {
-			return INVALID;
-		}
-
-		public int describe(Reader contents, IContentDescription description) {
-			return INVALID;
-		}
-
-		public QualifiedName[] getSupportedOptions() {
-			return new QualifiedName[0];
-		}
-	}
-
-	final static byte ASSOCIATED_BY_EXTENSION = 2;
-	final static byte ASSOCIATED_BY_NAME = 1;
-	private static final String DESCRIBER_ELEMENT = "describer"; //$NON-NLS-1$
-	private static ArrayList EMPTY_LIST = new ArrayList(0);
-	private static final Object INHERITED_DESCRIBER = "INHERITED DESCRIBER"; //$NON-NLS-1$
-
-	private static final Object NO_DESCRIBER = "NO DESCRIBER"; //$NON-NLS-1$
-	final static byte NOT_ASSOCIATED = 0;
-	public final static String PREF_DEFAULT_CHARSET = "charset"; //$NON-NLS-1$	
-	public final static String PREF_FILE_EXTENSIONS = "file-extensions"; //$NON-NLS-1$
-	public final static String PREF_FILE_NAMES = "file-names"; //$NON-NLS-1$
-	final static byte PRIORITY_HIGH = 1;
-	final static byte PRIORITY_LOW = -1;
-	final static byte PRIORITY_NORMAL = 0;
-	final static int SPEC_PRE_DEFINED = IGNORE_PRE_DEFINED;
-	final static int SPEC_USER_DEFINED = IGNORE_USER_DEFINED;
-	final static byte STATUS_INVALID = 2;
-	final static byte STATUS_UNKNOWN = 0;
-	final static byte STATUS_VALID = 1;
-	private String aliasTargetId;
-	private String baseTypeId;
-	private boolean builtInAssociations = false;
-	private ContentTypeCatalog catalog;
-	private IConfigurationElement contentTypeElement;
-	private DefaultDescription defaultDescription;
-	private Map defaultProperties;
-	private Object describer;
-	// we need a Cloneable list
-	private ArrayList fileSpecs = EMPTY_LIST;
-	String id;
-	private ContentTypeManager manager;
-	private String name;
-	private byte priority;
-	private ContentType target;
-	private String userCharset;
-	private byte validation = STATUS_UNKNOWN;
-	private ContentType baseType;
-	// -1 means unknown
-	private byte depth = -1;
-
-	public static ContentType createContentType(ContentTypeCatalog catalog, String uniqueId, String name, byte priority, String[] fileExtensions, String[] fileNames, String baseTypeId, String aliasTargetId, Map defaultProperties, IConfigurationElement contentTypeElement) {
-		ContentType contentType = new ContentType(catalog.getManager());
-		contentType.catalog = catalog;
-		contentType.defaultDescription = new DefaultDescription(contentType);
-		contentType.id = uniqueId;
-		contentType.name = name;
-		contentType.priority = priority;
-		if ((fileExtensions != null && fileExtensions.length > 0) || (fileNames != null && fileNames.length > 0)) {
-			contentType.builtInAssociations = true;
-			contentType.fileSpecs = new ArrayList(fileExtensions.length + fileNames.length);
-			for (int i = 0; i < fileNames.length; i++)
-				contentType.internalAddFileSpec(fileNames[i], FILE_NAME_SPEC | SPEC_PRE_DEFINED);
-			for (int i = 0; i < fileExtensions.length; i++)
-				contentType.internalAddFileSpec(fileExtensions[i], FILE_EXTENSION_SPEC | SPEC_PRE_DEFINED);
-		}
-		contentType.defaultProperties = defaultProperties;
-		contentType.contentTypeElement = contentTypeElement;
-		contentType.baseTypeId = baseTypeId;
-		contentType.aliasTargetId = aliasTargetId;
-		return contentType;
-	}
-
-	static FileSpec createFileSpec(String fileSpec, int type) {
-		return new FileSpec(fileSpec, type);
-	}
-
-	static String getPreferenceKey(int flags) {
-		if ((flags & FILE_EXTENSION_SPEC) != 0)
-			return PREF_FILE_EXTENSIONS;
-		if ((flags & FILE_NAME_SPEC) != 0)
-			return PREF_FILE_NAMES;
-		throw new IllegalArgumentException("Unknown type: " + flags); //$NON-NLS-1$
-	}
-
-	private static String getValidationString(byte validation) {
-		return validation == STATUS_VALID ? "VALID" : (validation == STATUS_INVALID ? "INVALID" : "UNKNOWN"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	}
-
-	public static void log(String message, Throwable reason) {
-		// don't log CoreExceptions again
-		IStatus status = new Status(IStatus.ERROR, ContentMessages.OWNER_NAME, 0, message, reason instanceof CoreException ? null : reason);
-		RuntimeLog.log(status);
-	}
-
-	public ContentType(ContentTypeManager manager) {
-		this.manager = manager;
-	}
-
-	/**
-	 * @see IContentType
-	 */
-	public void addFileSpec(String fileSpec, int type) throws CoreException {
-		Assert.isLegal(type == FILE_EXTENSION_SPEC || type == FILE_NAME_SPEC, "Unknown type: " + type); //$NON-NLS-1$		
-		String[] userSet;
-		synchronized (this) {
-			if (!internalAddFileSpec(fileSpec, type | SPEC_USER_DEFINED))
-				return;
-			userSet = getFileSpecs(type | IGNORE_PRE_DEFINED);
-		}
-		// persist using preferences		
-		Preferences contentTypeNode = manager.getPreferences().node(id);
-		String newValue = Util.toListString(userSet);
-		// we are adding stuff, newValue must be non-null
-		Assert.isNotNull(newValue);
-		setPreference(contentTypeNode, getPreferenceKey(type), newValue);
-		try {
-			contentTypeNode.flush();
-		} catch (BackingStoreException bse) {
-			String message = NLS.bind(ContentMessages.content_errorSavingSettings, id);
-			IStatus status = new Status(IStatus.ERROR, ContentMessages.OWNER_NAME, 0, message, bse);
-			throw new CoreException(status);
-		}
-		// notify listeners
-		manager.fireContentTypeChangeEvent(this);
-	}
-
-	int describe(IContentDescriber selectedDescriber, ILazySource contents, ContentDescription description) throws IOException {
-		try {
-			return contents.isText() ? ((ITextContentDescriber) selectedDescriber).describe((Reader) contents, description) : selectedDescriber.describe((InputStream) contents, description);
-		} catch (RuntimeException re) {
-			// describer seems to be buggy. just disable it (logging the reason)
-			invalidateDescriber(re);
-		} catch (Error e) {
-			// describer got some serious problem. disable it (logging the reason) and throw the error again 
-			invalidateDescriber(e);
-			throw e;
-		} catch (LowLevelIOException llioe) {
-			// throw the actual exception
-			throw llioe.getActualException();
-		} catch (IOException ioe) {
-			// bugs 67841/ 62443  - non-low level IOException should be "ignored"
-			if (ContentTypeManager.DEBUGGING) {
-				String message = NLS.bind(ContentMessages.content_errorReadingContents, id);
-				ContentType.log(message, ioe);
-			}
-			// we don't know what the describer would say if the exception didn't occur
-			return IContentDescriber.INDETERMINATE;
-		} finally {
-			contents.rewind();
-		}
-		return IContentDescriber.INVALID;
-	}
-
-	public boolean equals(Object another) {
-		if (another instanceof ContentType)
-			return id.equals(((ContentType) another).id);
-		if (another instanceof ContentTypeHandler)
-			return id.equals(((ContentTypeHandler) another).id);
-		return false;
-	}
-
-	public String getAliasTargetId() {
-		return aliasTargetId;
-	}
-
-	/**
-	 * @see IContentType
-	 */
-
-	public IContentType getBaseType() {
-		return baseType;
-	}
-
-	String getBaseTypeId() {
-		return baseTypeId;
-	}
-
-	public ContentTypeCatalog getCatalog() {
-		return catalog;
-	}
-
-	public ContentType getContentType() {
-		return this;
-	}
-
-	/**
-	 * @see IContentType
-	 */
-	public String getDefaultCharset() {
-		return getDefaultProperty(IContentDescription.CHARSET);
-	}
-
-	/**
-	 * @see IContentType
-	 */
-	public IContentDescription getDefaultDescription() {
-		return defaultDescription;
-	}
-
-	/**
-	 * Returns the default value for the given property in this content type, or <code>null</code>. 
-	 */
-	public String getDefaultProperty(QualifiedName key) {
-		String propertyValue = internalGetDefaultProperty(key);
-		if ("".equals(propertyValue)) //$NON-NLS-1$
-			return null;
-		return propertyValue;
-	}
-
-	byte getDepth() {
-		byte tmpDepth = depth;
-		if (tmpDepth >= 0)
-			return tmpDepth;
-		// depth was never computed - do it now
-		if (baseType == null)
-			return depth = 0;
-		return depth = (byte) (baseType == null ? 0 : (1 + baseType.getDepth()));
-	}
-
-	/**
-	 * Public for tests only, should not be called by anyone else.
-	 */
-	public IContentDescriber getDescriber() {
-		try {
-			// thread safety
-			Object tmpDescriber = describer;
-			if (tmpDescriber != null) {
-				if (INHERITED_DESCRIBER == tmpDescriber)
-					return baseType.getDescriber();
-				return (NO_DESCRIBER == tmpDescriber) ? null : (IContentDescriber) tmpDescriber;
-			}
-			final String describerValue = contentTypeElement.getAttributeAsIs(DESCRIBER_ELEMENT);
-			if (describerValue != null || contentTypeElement.getChildren(DESCRIBER_ELEMENT).length > 0)
-				try {
-					if ("".equals(describerValue)) { //$NON-NLS-1$
-						describer = NO_DESCRIBER;
-						return null;
-					}
-					describer = tmpDescriber = contentTypeElement.createExecutableExtension(DESCRIBER_ELEMENT);
-					return (IContentDescriber) tmpDescriber;
-				} catch (CoreException ce) {
-					// the content type definition was invalid. Ensure we don't
-					// try again, and this content type does not accept any
-					// contents
-					return invalidateDescriber(ce);
-				}
-		} catch (InvalidRegistryObjectException e) {
-			/*
-			 * This should only happen if  an API call is made after the registry has changed and before
-			 * the corresponding registry change event has been broadcast.  
-			 */
-			// the configuration element is stale - need to rebuild the catalog
-			manager.invalidate();
-			// bad timing - next time the client asks for a describer, s/he will have better luck
-			return null;
-		}
-		if (baseType == null) {
-			describer = NO_DESCRIBER;
-			return null;
-		}
-		// remember so we don't have to come all the way down here next time
-		describer = INHERITED_DESCRIBER;
-		return baseType.getDescriber();
-	}
-
-	/**
-	 * @see IContentType
-	 */
-	public IContentDescription getDescriptionFor(InputStream contents, QualifiedName[] options) throws IOException {
-		return internalGetDescriptionFor(ContentTypeManager.readBuffer(contents), options);
-	}
-
-	/**
-	 * @see IContentType
-	 */
-	public IContentDescription getDescriptionFor(Reader contents, QualifiedName[] options) throws IOException {
-		return internalGetDescriptionFor(ContentTypeManager.readBuffer(contents), options);
-	}
-
-	/**
-	 * @see IContentType
-	 */
-	public String[] getFileSpecs(int typeMask) {
-		if (fileSpecs.isEmpty())
-			return new String[0];
-		// invert the last two bits so it is easier to compare
-		typeMask ^= (IGNORE_PRE_DEFINED | IGNORE_USER_DEFINED);
-		List result = new ArrayList(fileSpecs.size());
-		for (Iterator i = fileSpecs.iterator(); i.hasNext();) {
-			FileSpec spec = (FileSpec) i.next();
-			if ((spec.getType() & typeMask) == spec.getType())
-				result.add(spec.getText());
-		}
-		return (String[]) result.toArray(new String[result.size()]);
-	}
-
-	/**
-	 * @see IContentType
-	 */
-	public String getId() {
-		return id;
-	}
-
-	/**
-	 * @see IContentType
-	 */
-	public String getName() {
-		return name;
-	}
-
-	byte getPriority() {
-		return priority;
-	}
-
-	public IContentTypeSettings getSettings(IScopeContext context) {
-		if (context == null || context.equals(manager.getContext()))
-			return this;
-		return new ContentTypeSettings(this, context);
-	}
-
-	/*
-	 * Returns the alias target, if one is found, or this object otherwise.
-	 */
-	ContentType getAliasTarget(boolean self) {
-		return (self && target == null) ? this : target;
-	}
-
-	byte getValidation() {
-		return validation;
-	}
-
-	boolean hasBuiltInAssociations() {
-		return builtInAssociations;
-	}
-
-	boolean hasFileSpec(IScopeContext context, String text, int typeMask) {
-		if (context.equals(manager.getContext()) || (typeMask & IGNORE_USER_DEFINED) != 0)
-			return hasFileSpec(text, typeMask, false);
-		String[] fileSpecs = ContentTypeSettings.getFileSpecs(context, id, typeMask);
-		for (int i = 0; i < fileSpecs.length; i++)
-			if (text.equalsIgnoreCase(fileSpecs[i]))
-				return true;
-		// no user defined association... try built-in
-		return hasFileSpec(text, typeMask | IGNORE_PRE_DEFINED, false);
-	}
-
-	/**
-	 * Returns whether this content type has the given file spec.
-	 * 
-	 * @param text the file spec string
-	 * @param typeMask FILE_NAME_SPEC or FILE_EXTENSION_SPEC
-	 * @param strict
-	 * @return true if this file spec has already been added, false otherwise
-	 */
-	boolean hasFileSpec(String text, int typeMask, boolean strict) {
-		if (fileSpecs.isEmpty())
-			return false;
-		for (Iterator i = fileSpecs.iterator(); i.hasNext();) {
-			FileSpec spec = (FileSpec) i.next();
-			if (spec.equals(text, typeMask, strict))
-				return true;
-		}
-		return false;
-	}
-
-	public int hashCode() {
-		return id.hashCode();
-	}
-
-	/**
-	 * Adds a user-defined or pre-defined file spec.
-	 */
-	boolean internalAddFileSpec(String fileSpec, int typeMask) {
-		if (hasFileSpec(fileSpec, typeMask, false))
-			return false;
-		FileSpec newFileSpec = createFileSpec(fileSpec, typeMask);
-		if ((typeMask & ContentType.SPEC_USER_DEFINED) == 0) {
-			// plug-in defined - all that is left to be done is to add it to the list
-			if (fileSpecs.isEmpty())
-				fileSpecs = new ArrayList(3);
-			fileSpecs.add(newFileSpec);
-			return true;
-		}
-		// update file specs atomically so threads traversing the list of file specs don't have to synchronize		
-		ArrayList tmpFileSpecs = (ArrayList) fileSpecs.clone();
-		tmpFileSpecs.add(newFileSpec);
-		catalog.associate(this, newFileSpec.getText(), newFileSpec.getType());
-		// set the new file specs atomically 
-		fileSpecs = tmpFileSpecs;
-		return true;
-	}
-
-	/**
-	 * Returns the default value for a property, recursively if necessary.  
-	 */
-	String internalGetDefaultProperty(QualifiedName key) {
-		// a special case for charset - users can override
-		if (userCharset != null && key.equals(IContentDescription.CHARSET))
-			return userCharset;
-		String defaultValue = basicGetDefaultProperty(key);
-		if (defaultValue != null)
-			return defaultValue;
-		// not defined here, try base type
-		return baseType == null ? null : baseType.internalGetDefaultProperty(key);
-	}
-
-	/**
-	 * Returns the value of a built-in property defined for this content type.
-	 */
-	String basicGetDefaultProperty(QualifiedName key) {
-		return defaultProperties == null ? null : (String) defaultProperties.get(key);
-	}
-
-	BasicDescription internalGetDescriptionFor(ILazySource buffer, QualifiedName[] options) throws IOException {
-		if (buffer == null)
-			return defaultDescription;
-		// use temporary local var to avoid sync'ing
-		IContentDescriber tmpDescriber = this.getDescriber();
-		// no describer - return default description
-		if (tmpDescriber == null)
-			return defaultDescription;
-		if (buffer.isText() && !(tmpDescriber instanceof ITextContentDescriber))
-			// it is an error to provide a Reader to a non-text content type
-			throw new UnsupportedOperationException();
-		ContentDescription description = new ContentDescription(options, this);
-		if (describe(tmpDescriber, buffer, description) == IContentDescriber.INVALID)
-			// the contents were actually invalid for the content type
-			return null;
-		// the describer didn't add any details, return default description
-		if (!description.isSet())
-			return defaultDescription;
-		// description cannot be changed afterwards
-		description.markImmutable();
-		return description;
-	}
-
-	byte internalIsAssociatedWith(String fileName, IScopeContext context) {
-		if (hasFileSpec(context, fileName, FILE_NAME_SPEC))
-			return ASSOCIATED_BY_NAME;
-		String fileExtension = ContentTypeManager.getFileExtension(fileName);
-		if (hasFileSpec(context, fileExtension, FILE_EXTENSION_SPEC))
-			return ASSOCIATED_BY_EXTENSION;
-		// if does not have built-in file specs, delegate to parent (if any)
-		if (!hasBuiltInAssociations() && baseType != null)
-			return baseType.internalIsAssociatedWith(fileName, context);
-		return NOT_ASSOCIATED;
-	}
-
-	boolean internalRemoveFileSpec(String fileSpec, int typeMask) {
-		if (fileSpecs.isEmpty())
-			return false;
-		// we modify the list of file specs atomically so we don't interfere with threads doing traversals
-		ArrayList tmpFileSpecs = (ArrayList) fileSpecs.clone();
-		for (Iterator i = tmpFileSpecs.iterator(); i.hasNext();) {
-			FileSpec spec = (FileSpec) i.next();
-			if ((spec.getType() == typeMask) && fileSpec.equals(spec.getText())) {
-				i.remove();
-				catalog.dissociate(this, spec.getText(), spec.getType());
-				// update the list of file specs
-				fileSpecs = tmpFileSpecs;
-				return true;
-			}
-		}
-		return false;
-	}
-
-	private IContentDescriber invalidateDescriber(Throwable reason) {
-		String message = NLS.bind(ContentMessages.content_invalidContentDescriber, id);
-		log(message, reason);
-		return (IContentDescriber) (describer = new InvalidDescriber());
-	}
-
-	boolean isAlias() {
-		return target != null;
-	}
-
-	/**
-	 * @see IContentType
-	 */
-	public boolean isAssociatedWith(String fileName) {
-		return isAssociatedWith(fileName, manager.getContext());
-	}
-
-	/**
-	 * @see IContentType
-	 */
-	public boolean isAssociatedWith(String fileName, IScopeContext context) {
-		return internalIsAssociatedWith(fileName, context) != NOT_ASSOCIATED;
-	}
-
-	/**
-	 * @see IContentType
-	 */
-	public boolean isKindOf(IContentType another) {
-		if (another == null)
-			return false;
-		if (this == another)
-			return true;
-		return baseType != null && baseType.isKindOf(another);
-	}
-
-	boolean isValid() {
-		return validation == STATUS_VALID;
-	}
-
-	void processPreferences(Preferences contentTypeNode) {
-		// user set default charset
-		this.userCharset = contentTypeNode.get(PREF_DEFAULT_CHARSET, null);
-		// user set file names 
-		String userSetFileNames = contentTypeNode.get(PREF_FILE_NAMES, null);
-		String[] fileNames = Util.parseItems(userSetFileNames);
-		for (int i = 0; i < fileNames.length; i++)
-			internalAddFileSpec(fileNames[i], FILE_NAME_SPEC | SPEC_USER_DEFINED);
-		// user set file extensions
-		String userSetFileExtensions = contentTypeNode.get(PREF_FILE_EXTENSIONS, null);
-		String[] fileExtensions = Util.parseItems(userSetFileExtensions);
-		for (int i = 0; i < fileExtensions.length; i++)
-			internalAddFileSpec(fileExtensions[i], FILE_EXTENSION_SPEC | SPEC_USER_DEFINED);
-	}
-
-	/**
-	 * @see IContentType
-	 */
-	public void removeFileSpec(String fileSpec, int type) throws CoreException {
-		Assert.isLegal(type == FILE_EXTENSION_SPEC || type == FILE_NAME_SPEC, "Unknown type: " + type); //$NON-NLS-1$		
-		synchronized (this) {
-			if (!internalRemoveFileSpec(fileSpec, type | SPEC_USER_DEFINED))
-				return;
-		}
-		// persist the change
-		Preferences contentTypeNode = manager.getPreferences().node(id);
-		final String[] userSet = getFileSpecs(type | IGNORE_PRE_DEFINED);
-		String preferenceKey = getPreferenceKey(type);
-		String newValue = Util.toListString(userSet);
-		setPreference(contentTypeNode, preferenceKey, newValue);
-		try {
-			contentTypeNode.flush();
-		} catch (BackingStoreException bse) {
-			String message = NLS.bind(ContentMessages.content_errorSavingSettings, id);
-			IStatus status = new Status(IStatus.ERROR, ContentMessages.OWNER_NAME, 0, message, bse);
-			throw new CoreException(status);
-		}
-		// notify listeners		
-		manager.fireContentTypeChangeEvent(this);
-	}
-
-	void setAliasTarget(ContentType newTarget) {
-		target = newTarget;
-	}
-
-	/**
-	 * @see IContentType
-	 */
-	public void setDefaultCharset(String newCharset) throws CoreException {
-		synchronized (this) {
-			// don't do anything if there is no actual change
-			if (userCharset == null) {
-				if (newCharset == null)
-					return;
-			} else if (userCharset.equals(newCharset))
-				return;
-			// apply change in memory
-			userCharset = newCharset;
-		}
-		// persist the change
-		Preferences contentTypeNode = manager.getPreferences().node(id);
-		setPreference(contentTypeNode, PREF_DEFAULT_CHARSET, userCharset);
-		try {
-			contentTypeNode.flush();
-		} catch (BackingStoreException bse) {
-			String message = NLS.bind(ContentMessages.content_errorSavingSettings, id);
-			IStatus status = new Status(IStatus.ERROR, ContentMessages.OWNER_NAME, 0, message, bse);
-			throw new CoreException(status);
-		}
-		// notify listeners
-		manager.fireContentTypeChangeEvent(this);
-	}
-
-	static void setPreference(Preferences node, String key, String value) {
-		if (value == null)
-			node.remove(key);
-		else
-			node.put(key, value);
-	}
-
-	void setValidation(byte validation) {
-		this.validation = validation;
-		if (ContentTypeManager.DEBUGGING)
-			ContentMessages.message("Validating " + this + ": " + getValidationString(validation)); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public String toString() {
-		return id;
-	}
-
-	void setBaseType(ContentType baseType) {
-		this.baseType = baseType;
-	}
-
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeBuilder.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeBuilder.java
deleted file mode 100644
index 9c77ed1..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeBuilder.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.content;
-
-import java.util.*;
-import org.eclipse.core.internal.runtime.RuntimeLog;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.content.IContentDescription;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.core.runtime.preferences.IPreferenceNodeVisitor;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.service.prefs.BackingStoreException;
-
-/**
- * This class is a sidekick for ContentTypeManager that provides mechanisms for 
- * creating content types from the extension registry (which ContentTypeManager
- *  is oblivious to).
- */
-public class ContentTypeBuilder {
-	public static final String PT_CONTENTTYPES = "contentTypes"; //$NON-NLS-1$	
-	private ContentTypeCatalog catalog;
-
-	private static String getUniqueId(String namespace, String baseTypeId) {
-		if (baseTypeId == null)
-			return null;
-		int separatorPosition = baseTypeId.lastIndexOf('.');
-		// base type is defined in the same namespace
-		if (separatorPosition == -1)
-			baseTypeId = namespace + '.' + baseTypeId;
-		return baseTypeId;
-	}
-
-	private static QualifiedName parseQualifiedName(String namespace, String value) {
-		if (value == null)
-			return null;
-		int separatorPosition = value.lastIndexOf('.');
-		// base type is defined in the same namespace
-		if (separatorPosition == -1)
-			return new QualifiedName(namespace, value);
-		if (separatorPosition == 0 || separatorPosition == value.length() - 1)
-			// invalid value specified
-			return null;
-		namespace = value.substring(0, separatorPosition);
-		String simpleValue = value.substring(separatorPosition + 1);
-		return new QualifiedName(namespace, simpleValue);
-	}
-
-	private static byte parsePriority(String priority) {
-		if (priority == null)
-			return ContentType.PRIORITY_NORMAL;
-		if (priority.equals("high")) //$NON-NLS-1$
-			return ContentType.PRIORITY_HIGH;
-		if (priority.equals("low")) //$NON-NLS-1$
-			return ContentType.PRIORITY_LOW;
-		if (!priority.equals("normal")) //$NON-NLS-1$
-			return ContentType.PRIORITY_NORMAL;
-		//TODO: should log - INVALID PRIORITY
-		return ContentType.PRIORITY_NORMAL;
-	}
-
-	protected ContentTypeBuilder(ContentTypeCatalog catalog) {
-		this.catalog = catalog;
-	}
-
-	private void addFileAssociation(IConfigurationElement fileAssociationElement, ContentType target) {
-		String[] fileNames = Util.parseItems(fileAssociationElement.getAttributeAsIs("file-names")); //$NON-NLS-1$
-		for (int i = 0; i < fileNames.length; i++)
-			target.internalAddFileSpec(fileNames[i], IContentType.FILE_NAME_SPEC | ContentType.SPEC_PRE_DEFINED);
-		String[] fileExtensions = Util.parseItems(fileAssociationElement.getAttributeAsIs("file-extensions")); //$NON-NLS-1$
-		for (int i = 0; i < fileExtensions.length; i++)
-			target.internalAddFileSpec(fileExtensions[i], IContentType.FILE_EXTENSION_SPEC | ContentType.SPEC_PRE_DEFINED);
-	}
-
-	/**
-	 * Builds all content types found in the extension registry.
-	 */
-	public void buildCatalog() {
-		IConfigurationElement[] allContentTypeCEs = getConfigurationElements();
-		for (int i = 0; i < allContentTypeCEs.length; i++)
-			if (allContentTypeCEs[i].getName().equals("content-type")) //$NON-NLS-1$
-				registerContentType(allContentTypeCEs[i]);
-		for (int i = 0; i < allContentTypeCEs.length; i++)
-			if (allContentTypeCEs[i].getName().equals("file-association")) //$NON-NLS-1$
-				registerFileAssociation(allContentTypeCEs[i]);
-		applyPreferences();
-	}
-
-	/**
-	 * Applies any existing preferences to content types as a batch operation.
-	 */
-	private void applyPreferences() {
-		try {
-			final ContentTypeCatalog localCatalog = catalog;
-			final IEclipsePreferences root = localCatalog.getManager().getPreferences();
-			root.accept(new IPreferenceNodeVisitor() {
-				public boolean visit(IEclipsePreferences node) {
-					if (node == root)
-						return true;
-					ContentType contentType = localCatalog.internalGetContentType(node.name());
-					if (contentType != null)
-						contentType.processPreferences(node);
-					// content type nodes don't have any children anyway
-					return false;
-				}
-			});
-		} catch (BackingStoreException bse) {
-			ContentType.log(ContentMessages.content_errorLoadingSettings, bse);
-		}
-	}
-
-	/**
-	 * @throws CoreException if mandatory attributes are missing in the markup
-	 */
-	private ContentType createContentType(IConfigurationElement contentTypeCE) throws CoreException {
-		String namespace = contentTypeCE.getContributor().getName();
-		String simpleId = contentTypeCE.getAttributeAsIs("id"); //$NON-NLS-1$
-		String name = contentTypeCE.getAttribute("name"); //$NON-NLS-1$
-
-		if (simpleId == null)
-			missingMandatoryAttribute(ContentMessages.content_missingIdentifier, namespace);
-		String uniqueId;
-		if (simpleId.lastIndexOf('.') == -1)
-			uniqueId = namespace + '.' + simpleId;
-		else
-			uniqueId = simpleId;
-		if (name == null)
-			missingMandatoryAttribute(ContentMessages.content_missingName, uniqueId);
-
-		byte priority = parsePriority(contentTypeCE.getAttributeAsIs("priority")); //$NON-NLS-1$);
-		String[] fileNames = Util.parseItems(contentTypeCE.getAttributeAsIs("file-names")); //$NON-NLS-1$
-		String[] fileExtensions = Util.parseItems(contentTypeCE.getAttributeAsIs("file-extensions")); //$NON-NLS-1$
-		String baseTypeId = getUniqueId(namespace, contentTypeCE.getAttributeAsIs("base-type")); //$NON-NLS-1$
-		String aliasTargetTypeId = getUniqueId(namespace, contentTypeCE.getAttributeAsIs("alias-for")); //$NON-NLS-1$		
-		IConfigurationElement[] propertyCEs = null;
-		Map defaultProperties = null;
-		if ((propertyCEs = contentTypeCE.getChildren("property")).length > 0) { //$NON-NLS-1$
-			defaultProperties = new HashMap();
-			for (int i = 0; i < propertyCEs.length; i++) {
-				String defaultValue = propertyCEs[i].getAttributeAsIs("default"); //$NON-NLS-1$
-				if (defaultValue == null)
-					// empty string means: default value is null
-					defaultValue = ""; //$NON-NLS-1$
-				String propertyKey = propertyCEs[i].getAttributeAsIs("name"); //$NON-NLS-1$
-				QualifiedName qualifiedKey = parseQualifiedName(namespace, propertyKey);
-				if (qualifiedKey == null) {
-					if (ContentTypeManager.DEBUGGING) {
-						String message = NLS.bind(ContentMessages.content_invalidProperty, propertyKey, getUniqueId(namespace, simpleId));
-						ContentType.log(message, null);
-					}
-					continue;
-				}
-				defaultProperties.put(qualifiedKey, defaultValue);
-			}
-		}
-		String defaultCharset = contentTypeCE.getAttributeAsIs("default-charset"); //$NON-NLS-1$
-		if (defaultCharset != null)
-			if (defaultProperties == null)
-				defaultProperties = Collections.singletonMap(IContentDescription.CHARSET, defaultCharset);
-			else if (!defaultProperties.containsKey(IContentDescription.CHARSET))
-				defaultProperties.put(IContentDescription.CHARSET, defaultCharset);
-		return ContentType.createContentType(catalog, uniqueId, name, priority, fileExtensions, fileNames, baseTypeId, aliasTargetTypeId, defaultProperties, contentTypeCE);
-	}
-
-	// Store this around for performance
-	private final static IConfigurationElement[] emptyConfArray = new IConfigurationElement[0];
-
-	/**
-	 * Gets confuguration elements for both "backward compatible" extension point
-	 * 		org.eclipse.core.runtime.contentTypes
-	 * and "new" extension point controlled by this plugin:
-	 * 		org.eclipse.core.contenttype.contentTypes
-	 */
-	protected IConfigurationElement[] getConfigurationElements() {
-		IExtensionRegistry registry = RegistryFactory.getRegistry();
-		IConfigurationElement[] oldConfigElements = emptyConfArray;
-		IConfigurationElement[] newConfigElements = emptyConfArray;
-		// "old" extenstion point
-		IExtensionPoint oldPoint = registry.getExtensionPoint(IContentConstants.RUNTIME_NAME, PT_CONTENTTYPES);
-		if (oldPoint != null)
-			oldConfigElements = oldPoint.getConfigurationElements();
-		// "new" extension point
-		IExtensionPoint newPoint = registry.getExtensionPoint(IContentConstants.CONTENT_NAME, PT_CONTENTTYPES);
-		if (newPoint != null)
-			newConfigElements = newPoint.getConfigurationElements();
-
-		IConfigurationElement[] allContentTypeCEs = new IConfigurationElement[oldConfigElements.length + newConfigElements.length];
-		System.arraycopy(oldConfigElements, 0, allContentTypeCEs, 0, oldConfigElements.length);
-		System.arraycopy(newConfigElements, 0, allContentTypeCEs, oldConfigElements.length, newConfigElements.length);
-
-		return allContentTypeCEs;
-	}
-
-	private void missingMandatoryAttribute(String messageKey, String argument) throws CoreException {
-		String message = NLS.bind(messageKey, argument);
-		throw new CoreException(new Status(IStatus.ERROR, ContentMessages.OWNER_NAME, 0, message, null));
-	}
-
-	private void registerContentType(IConfigurationElement contentTypeCE) {
-		try {
-			ContentType contentType = createContentType(contentTypeCE);
-			catalog.addContentType(contentType);
-		} catch (CoreException e) {
-			// failed validation
-			RuntimeLog.log(e.getStatus());
-		}
-	}
-
-	/* Adds extra file associations to existing content types. If the content 
-	 * type has not been added, the file association is ignored.
-	 */
-	private void registerFileAssociation(IConfigurationElement fileAssociationElement) {
-		//TODO: need to ensure the config. element is valid		
-		String contentTypeId = getUniqueId(fileAssociationElement.getContributor().getName(), fileAssociationElement.getAttribute("content-type")); //$NON-NLS-1$
-		ContentType target = catalog.internalGetContentType(contentTypeId);
-		if (target == null)
-			return;
-		addFileAssociation(fileAssociationElement, target);
-	}
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeCatalog.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeCatalog.java
deleted file mode 100644
index 775a2f6..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeCatalog.java
+++ /dev/null
@@ -1,555 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.content;
-
-import java.io.*;
-import java.util.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.content.*;
-import org.eclipse.core.runtime.content.IContentTypeManager.ISelectionPolicy;
-import org.eclipse.core.runtime.preferences.IScopeContext;
-
-public final class ContentTypeCatalog {
-	private static final IContentType[] NO_CONTENT_TYPES = new IContentType[0];
-
-	private Map allChildren = new HashMap();
-	private Map contentTypes = new HashMap();
-
-	private Map fileExtensions = new HashMap();
-
-	private Map fileNames = new HashMap();
-
-	private int generation;
-
-	private ContentTypeManager manager;
-
-	/**
-	 * A sorting policy where the more generic content type wins. Lexicographical comparison is done
-	 * as a last resort when all other criteria fail.  
-	 */
-	private Comparator policyConstantGeneralIsBetter = new Comparator() {
-		public int compare(Object o1, Object o2) {
-			ContentType type1 = (ContentType) o1;
-			ContentType type2 = (ContentType) o2;
-			// first criteria: depth - the lower, the better
-			int depthCriteria = type1.getDepth() - type2.getDepth();
-			if (depthCriteria != 0)
-				return depthCriteria;
-			// second criteria: priority - the higher, the better
-			int priorityCriteria = type1.getPriority() - type2.getPriority();
-			if (priorityCriteria != 0)
-				return -priorityCriteria;
-			// they have same depth and priority - choose one arbitrarily (stability is important)
-			return type1.getId().compareTo(type2.getId());
-		}
-	};
-
-	/**
-	 * A sorting policy where the more specific content type wins. Lexicographical comparison is done
-	 * as a last resort when all other criteria fail.  
-	 */
-	private Comparator policyConstantSpecificIsBetter = new Comparator() {
-		public int compare(Object o1, Object o2) {
-			ContentType type1 = (ContentType) o1;
-			ContentType type2 = (ContentType) o2;
-			// first criteria: depth - the higher, the better
-			int depthCriteria = type1.getDepth() - type2.getDepth();
-			if (depthCriteria != 0)
-				return -depthCriteria;
-			// second criteria: priority - the higher, the better
-			int priorityCriteria = type1.getPriority() - type2.getPriority();
-			if (priorityCriteria != 0)
-				return -priorityCriteria;
-			// they have same depth and priority - choose one arbitrarily (stability is important)
-			return type1.getId().compareTo(type2.getId());
-		}
-	};
-
-	/**
-	 * A sorting policy where the more general content type wins.  
-	 */
-	private Comparator policyGeneralIsBetter = new Comparator() {
-		public int compare(Object o1, Object o2) {
-			ContentType type1 = (ContentType) o1;
-			ContentType type2 = (ContentType) o2;
-			// first criteria: depth - the lower, the better
-			int depthCriteria = type1.getDepth() - type2.getDepth();
-			if (depthCriteria != 0)
-				return depthCriteria;
-			// second criteria: priority - the higher, the better
-			int priorityCriteria = type1.getPriority() - type2.getPriority();
-			if (priorityCriteria != 0)
-				return -priorityCriteria;
-			return 0;
-		}
-	};
-
-	/**
-	 * A sorting policy where content types are sorted by id.
-	 */
-	private Comparator policyLexicographical = new Comparator() {
-		public int compare(Object o1, Object o2) {
-			ContentType type1 = (ContentType) o1;
-			ContentType type2 = (ContentType) o2;
-			return type1.getId().compareTo(type2.getId());
-		}
-	};
-	/**
-	 * A sorting policy where the more specific content type wins.  
-	 */
-	private Comparator policySpecificIsBetter = new Comparator() {
-		public int compare(Object o1, Object o2) {
-			ContentType type1 = (ContentType) o1;
-			ContentType type2 = (ContentType) o2;
-			// first criteria: depth - the higher, the better
-			int depthCriteria = type1.getDepth() - type2.getDepth();
-			if (depthCriteria != 0)
-				return -depthCriteria;
-			// second criteria: priority - the higher, the better
-			int priorityCriteria = type1.getPriority() - type2.getPriority();
-			if (priorityCriteria != 0)
-				return -priorityCriteria;
-			return 0;
-		}
-	};
-
-	private static IContentType[] concat(IContentType[][] types) {
-		if (types[0].length == 0)
-			return types[1];
-		if (types[1].length == 0)
-			return types[0];
-		IContentType[] result = new IContentType[types[0].length + types[1].length];
-		System.arraycopy(types[0], 0, result, 0, types[0].length);
-		System.arraycopy(types[1], 0, result, types[0].length, types[1].length);
-		return result;
-	}
-
-	public ContentTypeCatalog(ContentTypeManager manager, int generation) {
-		this.manager = manager;
-		this.generation = generation;
-	}
-
-	void addContentType(IContentType contentType) {
-		contentTypes.put(contentType.getId(), contentType);
-	}
-
-	/**
-	 * Applies a client-provided selection policy. 
-	 */
-	private IContentType[] applyPolicy(final IContentTypeManager.ISelectionPolicy policy, final IContentType[] candidates, final boolean fileName, final boolean contents) {
-		final IContentType[][] result = new IContentType[][] {candidates};
-		SafeRunner.run(new ISafeRunnable() {
-			public void handleException(Throwable exception) {
-				// already logged in Platform#run()
-				// default result is the original array
-				// nothing to be done
-			}
-
-			public void run() throws Exception {
-				result[0] = policy.select(candidates, fileName, contents);
-			}
-		});
-		return result[0];
-	}
-
-	void associate(ContentType contentType) {
-		String[] builtInFileNames = contentType.getFileSpecs(IContentType.IGNORE_USER_DEFINED | IContentType.FILE_NAME_SPEC);
-		for (int i = 0; i < builtInFileNames.length; i++)
-			associate(contentType, builtInFileNames[i], IContentType.FILE_NAME_SPEC);
-		String[] builtInFileExtensions = contentType.getFileSpecs(IContentType.IGNORE_USER_DEFINED | IContentType.FILE_EXTENSION_SPEC);
-		for (int i = 0; i < builtInFileExtensions.length; i++)
-			associate(contentType, builtInFileExtensions[i], IContentType.FILE_EXTENSION_SPEC);
-	}
-
-	void associate(ContentType contentType, String text, int type) {
-		Map fileSpecMap = ((type & IContentType.FILE_NAME_SPEC) != 0) ? fileNames : fileExtensions;
-		String mappingKey = FileSpec.getMappingKeyFor(text);
-		Set existing = (Set) fileSpecMap.get(mappingKey);
-		if (existing == null)
-			fileSpecMap.put(mappingKey, existing = new HashSet());
-		existing.add(contentType);
-	}
-
-	private int collectMatchingByContents(int valid, IContentType[] subset, List destination, ILazySource contents) throws IOException {
-		for (int i = 0; i < subset.length; i++) {
-			ContentType current = (ContentType) subset[i];
-			IContentDescriber describer = current.getDescriber();
-			int status = IContentDescriber.INDETERMINATE;
-			if (describer != null) {
-				if (contents.isText() && !(describer instanceof ITextContentDescriber))
-					// for text streams we skip content types that do not provide text-based content describers
-					continue;
-				status = current.describe(describer, contents, null);
-				if (status == IContentDescriber.INVALID)
-					continue;
-			}
-			if (status == IContentDescriber.VALID)
-				destination.add(valid++, current);
-			else
-				destination.add(current);
-		}
-		return valid;
-	}
-
-	void dissociate(ContentType contentType, String text, int type) {
-		Map fileSpecMap = ((type & IContentType.FILE_NAME_SPEC) != 0) ? fileNames : fileExtensions;
-		String mappingKey = FileSpec.getMappingKeyFor(text);
-		Set existing = (Set) fileSpecMap.get(mappingKey);
-		if (existing == null)
-			return;
-		existing.remove(contentType);
-	}
-
-	/**
-	 * A content type will be valid if:
-	 * <ol>
-	 * <li>it does not designate a base type, or</li>
-	 * <li>it designates a base type that exists and is valid</li>
-	 * </ol>
-	 * <p>And</p>:
-	 * <ol>
-	 * <li>it does not designate an alias type, or</li>
-	 * <li>it designates an alias type that does not exist, or</li>
-	 * <li>it designates an alias type that exists and is valid</li>
-	 * </ol> 
-	 */
-	private boolean ensureValid(ContentType type) {
-		if (type.getValidation() != ContentType.STATUS_UNKNOWN)
-			// already processed
-			return type.isValid();
-		// set this type temporarily as invalid to prevent cycles
-		// all types in a cycle would remain as invalid
-		type.setValidation(ContentType.STATUS_INVALID);
-		if (type.isAlias())
-			// it is an alias, leave as invalid
-			return false;
-		// check base type
-		ContentType baseType = null;
-		if (type.getBaseTypeId() != null) {
-			baseType = (ContentType) contentTypes.get(type.getBaseTypeId());
-			if (baseType == null)
-				// invalid: specified base type is not known
-				return false;
-			// base type exists, ensure it is valid
-			baseType = baseType.getAliasTarget(true);
-			ensureValid(baseType);
-			if (baseType.getValidation() != ContentType.STATUS_VALID)
-				// invalid: base type was invalid
-				return false;
-		}
-		// valid: all conditions satisfied
-		type.setValidation(ContentType.STATUS_VALID);
-		type.setBaseType(baseType);
-		return true;
-	}
-
-	IContentType[] findContentTypesFor(ContentTypeMatcher matcher, InputStream contents, String fileName) throws IOException {
-		final ILazySource buffer = ContentTypeManager.readBuffer(contents);
-		IContentType[] selected = internalFindContentTypesFor(matcher, buffer, fileName, true);
-		// give the policy a chance to change the results
-		ISelectionPolicy policy = matcher.getPolicy();
-		if (policy != null)
-			selected = applyPolicy(policy, selected, fileName != null, true);
-		return selected;
-	}
-
-	IContentType[] findContentTypesFor(ContentTypeMatcher matcher, final String fileName) {
-		IContentType[] selected = concat(internalFindContentTypesFor(matcher, fileName, policyConstantGeneralIsBetter));
-		// give the policy a chance to change the results
-		ISelectionPolicy policy = matcher.getPolicy();
-		if (policy != null)
-			selected = applyPolicy(policy, selected, true, false);
-		return selected;
-	}
-
-	public IContentType[] getAllContentTypes() {
-		List result = new ArrayList(contentTypes.size());
-		for (Iterator i = contentTypes.values().iterator(); i.hasNext();) {
-			ContentType type = (ContentType) i.next();
-			if (type.isValid() && !type.isAlias())
-				result.add(type);
-		}
-		return (IContentType[]) result.toArray(new IContentType[result.size()]);
-	}
-
-	public ContentType[] getChildren(ContentType parent) {
-		ContentType[] children = (ContentType[]) allChildren.get(parent);
-		if (children != null)
-			return children;
-		List result = new ArrayList(5);
-		for (Iterator i = this.contentTypes.values().iterator(); i.hasNext();) {
-			ContentType next = (ContentType) i.next();
-			if (next.getBaseType() == parent)
-				result.add(next);
-		}
-		children = (ContentType[]) result.toArray(new ContentType[result.size()]);
-		allChildren.put(parent, children);
-		return children;
-	}
-
-	public ContentType getContentType(String contentTypeIdentifier) {
-		ContentType type = internalGetContentType(contentTypeIdentifier);
-		return (type != null && type.isValid() && !type.isAlias()) ? type : null;
-	}
-
-	private IContentDescription getDescriptionFor(ContentTypeMatcher matcher, ILazySource contents, String fileName, QualifiedName[] options) throws IOException {
-		IContentType[] selected = internalFindContentTypesFor(matcher, contents, fileName, false);
-		if (selected.length == 0)
-			return null;
-		// give the policy a chance to change the results
-		ISelectionPolicy policy = matcher.getPolicy();
-		if (policy != null) {
-			selected = applyPolicy(policy, selected, fileName != null, true);
-			if (selected.length == 0)
-				return null;
-		}
-		return matcher.getSpecificDescription(((ContentType) selected[0]).internalGetDescriptionFor(contents, options));
-	}
-
-	public IContentDescription getDescriptionFor(ContentTypeMatcher matcher, InputStream contents, String fileName, QualifiedName[] options) throws IOException {
-		return getDescriptionFor(matcher, ContentTypeManager.readBuffer(contents), fileName, options);
-	}
-
-	public IContentDescription getDescriptionFor(ContentTypeMatcher matcher, Reader contents, String fileName, QualifiedName[] options) throws IOException {
-		return getDescriptionFor(matcher, ContentTypeManager.readBuffer(contents), fileName, options);
-	}
-
-	public int getGeneration() {
-		return generation;
-	}
-
-	public ContentTypeManager getManager() {
-		return manager;
-	}
-
-	public boolean internalAccept(ContentTypeVisitor visitor, ContentType root) {
-		if (!root.isValid() || root.isAlias())
-			return true;
-		int result = visitor.visit(root);
-		switch (result) {
-			// stop traversing the tree
-			case ContentTypeVisitor.STOP :
-				return false;
-			// stop traversing this subtree
-			case ContentTypeVisitor.RETURN :
-				return true;
-		}
-		ContentType[] children = getChildren(root);
-		if (children == null)
-			// this content type has no subtypes - keep traversing the tree
-			return true;
-		for (int i = 0; i < children.length; i++)
-			if (!internalAccept(visitor, children[i]))
-				// stop the traversal
-				return false;
-		return true;
-	}
-
-	public IContentType[] internalFindContentTypesFor(ILazySource buffer, IContentType[][] subset, Comparator validPolicy, Comparator indeterminatePolicy) throws IOException {
-		final List appropriate = new ArrayList(5);
-		final int validFullName = collectMatchingByContents(0, subset[0], appropriate, buffer);
-		final int appropriateFullName = appropriate.size();
-		final int validExtension = collectMatchingByContents(validFullName, subset[1], appropriate, buffer) - validFullName;
-		final int appropriateExtension = appropriate.size() - appropriateFullName;
-		IContentType[] result = (IContentType[]) appropriate.toArray(new IContentType[appropriate.size()]);
-		if (validFullName > 1)
-			Arrays.sort(result, 0, validFullName, validPolicy);
-		if (validExtension > 1)
-			Arrays.sort(result, validFullName, validFullName + validExtension, validPolicy);
-		if (appropriateFullName - validFullName > 1)
-			Arrays.sort(result, validFullName + validExtension, appropriateFullName + validExtension, indeterminatePolicy);
-		if (appropriateExtension - validExtension > 1)
-			Arrays.sort(result, appropriateFullName + validExtension, appropriate.size(), indeterminatePolicy);
-		return result;
-	}
-
-	private IContentType[] internalFindContentTypesFor(ContentTypeMatcher matcher, ILazySource buffer, String fileName, boolean forceValidation) throws IOException {
-		final IContentType[][] subset;
-		final Comparator validPolicy;
-		Comparator indeterminatePolicy;
-		if (fileName == null) {
-			// we only have a single array, by need to provide a two-dimensional, 2-element array 
-			subset = new IContentType[][] {getAllContentTypes(), NO_CONTENT_TYPES};
-			indeterminatePolicy = policyConstantGeneralIsBetter;
-			validPolicy = policyConstantSpecificIsBetter;
-		} else {
-			subset = internalFindContentTypesFor(matcher, fileName, policyLexicographical);
-			indeterminatePolicy = policyGeneralIsBetter;
-			validPolicy = policySpecificIsBetter;
-		}
-		int total = subset[0].length + subset[1].length;
-		if (total == 0)
-			// don't do further work if subset is empty
-			return NO_CONTENT_TYPES;	
-		if (!forceValidation && total == 1) {
-			// do not do validation if not forced and only one was found (caller will validate later)
-			IContentType[] found = subset[0].length == 1 ? subset[0] : subset[1];
-			// bug 100032 - ignore binary content type if contents are text			
-			if (!buffer.isText())
-				// binary buffer, caller can call the describer with no risk
-				return found;
-			// text buffer, need to check describer			
-			IContentDescriber describer = ((ContentType) found[0]).getDescriber();			
-			if (describer == null || describer instanceof ITextContentDescriber)
-				// no describer or text describer, that is fine
-				return found;
-			// only eligible content type is binary and contents are text, ignore it
-			return NO_CONTENT_TYPES;			
-		}
-		return internalFindContentTypesFor(buffer, subset, validPolicy, indeterminatePolicy);
-	}
-
-	/**
-	 * This is the implementation for file name based content type matching. 
-	 * 
-	 * @return all matching content types in the preferred order 
-	 * @see IContentTypeManager#findContentTypesFor(String)
-	 */
-	public IContentType[][] internalFindContentTypesFor(ContentTypeMatcher matcher, final String fileName, Comparator sortingPolicy) {
-		IScopeContext context = matcher.getContext();
-		IContentType[][] result = {NO_CONTENT_TYPES, NO_CONTENT_TYPES};
-
-		final Set allByFileName;
-
-		if (context.equals(manager.getContext()))
-			allByFileName = getDirectlyAssociated(fileName, IContentTypeSettings.FILE_NAME_SPEC);
-		else {
-			allByFileName = new HashSet(getDirectlyAssociated(fileName, IContentTypeSettings.FILE_NAME_SPEC | IContentType.IGNORE_USER_DEFINED));
-			allByFileName.addAll(matcher.getDirectlyAssociated(this, fileName, IContentTypeSettings.FILE_NAME_SPEC));
-		}
-		Set selectedByName = selectMatchingByName(context, allByFileName, Collections.EMPTY_SET, fileName, IContentType.FILE_NAME_SPEC);
-		result[0] = (IContentType[]) selectedByName.toArray(new IContentType[selectedByName.size()]);
-		final String fileExtension = ContentTypeManager.getFileExtension(fileName);
-		if (fileExtension != null) {
-			final Set allByFileExtension;
-			if (context.equals(manager.getContext()))
-				allByFileExtension = getDirectlyAssociated(fileExtension, IContentTypeSettings.FILE_EXTENSION_SPEC);
-			else {
-				allByFileExtension = new HashSet(getDirectlyAssociated(fileExtension, IContentTypeSettings.FILE_EXTENSION_SPEC | IContentType.IGNORE_USER_DEFINED));
-				allByFileExtension.addAll(matcher.getDirectlyAssociated(this, fileExtension, IContentTypeSettings.FILE_EXTENSION_SPEC));
-			}
-			Set selectedByExtension = selectMatchingByName(context, allByFileExtension, selectedByName, fileExtension, IContentType.FILE_EXTENSION_SPEC);
-			if (!selectedByExtension.isEmpty())
-				result[1] = (IContentType[]) selectedByExtension.toArray(new IContentType[selectedByExtension.size()]);
-		}
-		if (result[0].length > 1)
-			Arrays.sort(result[0], sortingPolicy);
-		if (result[1].length > 1)
-			Arrays.sort(result[1], sortingPolicy);
-		return result;
-	}
-
-	/**
-	 * Returns content types directly associated with the given file spec.
-	 * 
-	 * @param text a file name or extension
-	 * @param typeMask a bit-wise or of the following flags:
-	 * <ul>
-	 * 		<li>IContentType.FILE_NAME, </li>
-	 * 		<li>IContentType.FILE_EXTENSION, </li>
-	 * 		<li>IContentType.IGNORE_PRE_DEFINED, </li>
-	 * 		<li>IContentType.IGNORE_USER_DEFINED</li>
-	 *	</ul>
-	 * @return a set of content types
-	 */
-	public Set getDirectlyAssociated(String text, int typeMask) {
-		Map associations = (typeMask & IContentTypeSettings.FILE_NAME_SPEC) != 0 ? fileNames : fileExtensions;
-		Set result = null;
-		if ((typeMask & (IContentType.IGNORE_PRE_DEFINED | IContentType.IGNORE_USER_DEFINED)) == 0)
-			// no restrictions, get everything
-			result = (Set) associations.get(FileSpec.getMappingKeyFor(text));
-		else {
-			// only those specs satisfying the the type mask should be included
-			Set initialSet = (Set) associations.get(FileSpec.getMappingKeyFor(text));
-			if (initialSet != null && !initialSet.isEmpty()) {
-				// copy so we can modify
-				result = new HashSet(initialSet);
-				// invert the last two bits so it is easier to compare
-				typeMask ^= (IContentType.IGNORE_PRE_DEFINED | IContentType.IGNORE_USER_DEFINED);
-				for (Iterator i = result.iterator(); i.hasNext();) {
-					ContentType contentType = (ContentType) i.next();
-					if (!contentType.hasFileSpec(text, typeMask, true))
-						i.remove();
-				}
-			}
-		}
-		return result == null ? Collections.EMPTY_SET : result;
-	}
-
-	ContentType internalGetContentType(String contentTypeIdentifier) {
-		return (ContentType) contentTypes.get(contentTypeIdentifier);
-	}
-
-	void makeAliases() {
-		// process all content types marking aliases appropriately
-		for (Iterator i = contentTypes.values().iterator(); i.hasNext();) {
-			ContentType type = (ContentType) i.next();
-			String targetId = type.getAliasTargetId();
-			if (targetId == null)
-				continue;
-			ContentType target = internalGetContentType(targetId);
-			if (target != null)
-				type.setAliasTarget(target);
-		}
-	}
-
-	/**
-	 * Resolves inter-content type associations (inheritance and aliasing).
-	 */
-	protected void organize() {
-		// build the aliasing
-		makeAliases();
-		// do the validation
-		for (Iterator i = contentTypes.values().iterator(); i.hasNext();) {
-			ContentType type = (ContentType) i.next();
-			if (ensureValid(type))
-				associate(type);
-		}
-		if (ContentTypeManager.DEBUGGING)
-			for (Iterator i = contentTypes.values().iterator(); i.hasNext();) {
-				ContentType type = (ContentType) i.next();
-				if (!type.isValid())
-					ContentMessages.message("Invalid: " + type); //$NON-NLS-1$
-			}
-	}
-
-	/**
-	 * Processes all content types in source, adding those matching the given file spec to the
-	 * destination collection.
-	 */
-	private Set selectMatchingByName(final IScopeContext context, Collection source, final Collection existing, final String fileSpecText, final int fileSpecType) {
-		if (source == null || source.isEmpty())
-			return Collections.EMPTY_SET;
-		final Set destination = new HashSet(5);
-		// process all content types in the given collection
-		for (Iterator i = source.iterator(); i.hasNext();) {
-			final ContentType root = (ContentType) i.next();
-			// From a given content type, check if it matches, and 
-			// include any children that match as well.
-			internalAccept(new ContentTypeVisitor() {
-				public int visit(ContentType type) {
-					if (type != root && type.hasBuiltInAssociations())
-						// this content type has built-in associations - visit it later as root						
-						return RETURN;
-					if (type == root && !type.hasFileSpec(context, fileSpecText, fileSpecType))
-						// it is the root and does not match the file name - do not add it nor look into its children						
-						return RETURN;
-					// either the content type is the root and matches the file name or 
-					// is a sub content type and does not have built-in files specs
-					if (!existing.contains(type))
-						destination.add(type);
-					return CONTINUE;
-				}
-			}, root);
-		}
-		return destination;
-	}
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeHandler.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeHandler.java
deleted file mode 100644
index 74cdad3..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeHandler.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.content;
-
-import java.io.*;
-import java.lang.ref.SoftReference;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.core.runtime.content.*;
-import org.eclipse.core.runtime.preferences.IScopeContext;
-
-/**
- * The only content types exposed to clients. Allows the content type registry to change 
- * underneath preserving handlers kept by clients.
- */
-public class ContentTypeHandler implements IContentType {
-
-	/**
-	 * A dummy description object to be returned by getDescription when this 
-	 * handler's target cannot be determined. 
-	 */
-	private class DummyContentDescription implements IContentDescription {
-		public String getCharset() {
-			return null;
-		}
-
-		public IContentType getContentType() {
-			return ContentTypeHandler.this;
-		}
-
-		public Object getProperty(QualifiedName key) {
-			return null;
-		}
-
-		public boolean isRequested(QualifiedName key) {
-			return false;
-		}
-
-		public void setProperty(QualifiedName key, Object value) {
-			// don't do anything
-		}
-	}
-
-	private int generation;
-	String id;
-	private SoftReference targetRef;
-
-	ContentTypeHandler(ContentType target, int generation) {
-		this.id = target.getId();
-		this.targetRef = new SoftReference(target);
-		this.generation = generation;
-	}
-
-	public void addFileSpec(String fileSpec, int type) throws CoreException {
-		final IContentType target = getTarget();
-		if (target != null)
-			target.addFileSpec(fileSpec, type);
-	}
-
-	public boolean equals(Object another) {
-		if (another instanceof ContentType)
-			return id.equals(((ContentType) another).id);
-		if (another instanceof ContentTypeHandler)
-			return id.equals(((ContentTypeHandler) another).id);
-		return false;
-	}
-
-	public IContentType getBaseType() {
-		final ContentType target = getTarget();
-		if (target == null)
-			return null;
-		final ContentType baseType = (ContentType) target.getBaseType();
-		return (baseType != null) ? new ContentTypeHandler(baseType, baseType.getCatalog().getGeneration()) : null;
-	}
-
-	public String getDefaultCharset() {
-		final IContentType target = getTarget();
-		return (target != null) ? target.getDefaultCharset() : null;
-	}
-
-	public IContentDescription getDefaultDescription() {
-		final IContentType target = getTarget();
-		return (target != null) ? target.getDefaultDescription() : new DummyContentDescription();
-	}
-
-	public IContentDescription getDescriptionFor(InputStream contents, QualifiedName[] options) throws IOException {
-		final IContentType target = getTarget();
-		return (target != null) ? target.getDescriptionFor(contents, options) : null;
-	}
-
-	public IContentDescription getDescriptionFor(Reader contents, QualifiedName[] options) throws IOException {
-		final IContentType target = getTarget();
-		return (target != null) ? target.getDescriptionFor(contents, options) : null;
-	}
-
-	public String[] getFileSpecs(int type) {
-		final IContentType target = getTarget();
-		return (target != null) ? target.getFileSpecs(type) : new String[0];
-	}
-
-	public String getId() {
-		return id;
-	}
-
-	public String getName() {
-		final IContentType target = getTarget();
-		return (target != null) ? target.getName() : id;
-	}
-
-	public IContentTypeSettings getSettings(IScopeContext context) throws CoreException {
-		final ContentType target = getTarget();
-		if (target == null)
-			return null;
-		// the content type may returned itself as the settings object (instance scope context)
-		final IContentTypeSettings settings = target.getSettings(context);
-		// in that case, return this same handler; otherwise, just return the settings 
-		return settings == target ? this : settings;
-	}
-
-	/**
-	 * Returns the content type this handler represents. 
-	 * Note that this handles the case of aliasing.
-	 * 
-	 * Public for testing purposes only.
-	 */
-	public ContentType getTarget() {
-		ContentType target = (ContentType) targetRef.get();
-		ContentTypeCatalog catalog = ContentTypeManager.getInstance().getCatalog();
-		if (target == null || catalog.getGeneration() != generation) {
-			target = catalog.getContentType(id);
-			targetRef = new SoftReference(target);
-			generation = catalog.getGeneration();
-		}
-		return target == null ? null : target.getAliasTarget(true);
-	}
-
-	public int hashCode() {
-		return id.hashCode();
-	}
-
-	public boolean isAssociatedWith(String fileName) {
-		final IContentType target = getTarget();
-		return (target != null) ? target.isAssociatedWith(fileName) : false;
-	}
-
-	public boolean isAssociatedWith(String fileName, IScopeContext context) {
-		final IContentType target = getTarget();
-		return (target != null) ? target.isAssociatedWith(fileName, context) : false;
-	}
-
-	public boolean isKindOf(IContentType another) {
-		if (another instanceof ContentTypeHandler)
-			another = ((ContentTypeHandler) another).getTarget();
-		final IContentType target = getTarget();
-		return (target != null) ? target.isKindOf(another) : false;
-	}
-
-	public void removeFileSpec(String fileSpec, int type) throws CoreException {
-		final IContentType target = getTarget();
-		if (target != null)
-			target.removeFileSpec(fileSpec, type);
-	}
-
-	public void setDefaultCharset(String userCharset) throws CoreException {
-		final IContentType target = getTarget();
-		if (target != null)
-			target.setDefaultCharset(userCharset);
-	}
-
-	public String toString() {
-		return id;
-	}
-
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeManager.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeManager.java
deleted file mode 100644
index 25885bf..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeManager.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.content;
-
-import java.io.InputStream;
-import java.io.Reader;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.content.*;
-import org.eclipse.core.runtime.preferences.*;
-
-public class ContentTypeManager extends ContentTypeMatcher implements IContentTypeManager, IRegistryChangeListener {
-	private static ContentTypeManager instance;
-
-	public static final int BLOCK_SIZE = 0x400;
-	public static final String CONTENT_TYPE_PREF_NODE = IContentConstants.RUNTIME_NAME + IPath.SEPARATOR + "content-types"; //$NON-NLS-1$
-	private static final String OPTION_DEBUG_CONTENT_TYPES = "org.eclipse.core.contenttype/debug"; //$NON-NLS-1$;
-	static final boolean DEBUGGING = ContentOSGiUtils.getDefault().getBooleanDebugOption(OPTION_DEBUG_CONTENT_TYPES, false);
-	private ContentTypeCatalog catalog;
-	private int catalogGeneration;
-
-	/** 
-	 * List of registered listeners (element type: 
-	 * <code>IContentTypeChangeListener</code>).
-	 * These listeners are to be informed when 
-	 * something in a content type changes.
-	 */
-	protected ListenerList contentTypeListeners = new ListenerList();
-
-	/**
-	 * Creates and initializes the platform's content type manager. A reference to the
-	 * content type manager can later be obtained by calling <code>getInstance()</code>.
-	 * <p>
-	 * Since calling this method will cause the content type manager to register a registry change listener, 
-	 * this method must be called while the extension registry is available.
-	 * </p>
-	 */
-	public static void startup() {
-		instance = new ContentTypeManager();
-		RegistryFactory.getRegistry().addRegistryChangeListener(instance, IContentConstants.RUNTIME_NAME);
-		RegistryFactory.getRegistry().addRegistryChangeListener(instance, IContentConstants.CONTENT_NAME);
-	}
-
-	/**
-	 * Shuts down the platform's content type manager. After this call returns,
-	 * the content type manager will be closed for business.
-	 * <p>
-	 * Since calling this method will cause the content type manager to unregister a registry change listener, 
-	 * this method must be called while the extension registry is available.
-	 * </p>
-	 */
-	public static void shutdown() {
-		RegistryFactory.getRegistry().removeRegistryChangeListener(instance);
-		instance = null;
-	}
-
-	/**
-	 * Obtains this platform's content type manager. 
-	 * <p>
-	 * It has to have been created first by a call to <code>create()</code>,
-	 * otherwise an <code>AssertionFailedException</code> will be thrown.
-	 * </p> 
-	 * 
-	 * @return the content type manager
-	 */
-	public static ContentTypeManager getInstance() {
-		Assert.isNotNull(instance);
-		return instance;
-	}
-
-	/*
-	 * Returns the extension for a file name (omitting the leading '.').
-	 */
-	static String getFileExtension(String fileName) {
-		int dotPosition = fileName.lastIndexOf('.');
-		return (dotPosition == -1 || dotPosition == fileName.length() - 1) ? "" : fileName.substring(dotPosition + 1); //$NON-NLS-1$
-	}
-
-	protected static ILazySource readBuffer(InputStream contents) {
-		return new LazyInputStream(contents, BLOCK_SIZE);
-	}
-
-	protected static ILazySource readBuffer(Reader contents) {
-		return new LazyReader(contents, BLOCK_SIZE);
-	}
-
-	public ContentTypeManager() {
-		super(null, new InstanceScope());
-	}
-
-	protected ContentTypeBuilder createBuilder(ContentTypeCatalog newCatalog) {
-		return new ContentTypeBuilder(newCatalog);
-	}
-
-	public IContentType[] getAllContentTypes() {
-		ContentTypeCatalog currentCatalog = getCatalog();
-		IContentType[] types = currentCatalog.getAllContentTypes();
-		IContentType[] result = new IContentType[types.length];
-		int generation = currentCatalog.getGeneration();
-		for (int i = 0; i < result.length; i++)
-			result[i] = new ContentTypeHandler((ContentType) types[i], generation);
-		return result;
-	}
-
-	protected synchronized ContentTypeCatalog getCatalog() {
-		if (catalog != null)
-			// already has one			
-			return catalog;
-		// create new catalog 
-		ContentTypeCatalog newCatalog = new ContentTypeCatalog(this, catalogGeneration++);
-		// build catalog by parsing the extension registry
-		ContentTypeBuilder builder = createBuilder(newCatalog);
-		try {
-			builder.buildCatalog();
-			// only remember catalog if building it was successful 
-			catalog = newCatalog;
-		} catch (InvalidRegistryObjectException e) {
-			// the registry has stale objects... just don't remember the returned (incomplete) catalog
-		}
-		newCatalog.organize();
-		return newCatalog;
-	}
-
-	public IContentType getContentType(String contentTypeIdentifier) {
-		ContentTypeCatalog currentCatalog = getCatalog();
-		ContentType type = currentCatalog.getContentType(contentTypeIdentifier);
-		return type == null ? null : new ContentTypeHandler(type, currentCatalog.getGeneration());
-	}
-
-	public IContentTypeMatcher getMatcher(final ISelectionPolicy customPolicy, final IScopeContext context) {
-		return new ContentTypeMatcher(customPolicy, context == null ? getContext() : context);
-	}
-
-	IEclipsePreferences getPreferences() {
-		return getPreferences(getContext());
-	}
-
-	IEclipsePreferences getPreferences(IScopeContext context) {
-		return context.getNode(CONTENT_TYPE_PREF_NODE);
-	}
-
-	public void registryChanged(IRegistryChangeEvent event) {
-		// no changes related to the content type registry
-		if (event.getExtensionDeltas(IContentConstants.RUNTIME_NAME, ContentTypeBuilder.PT_CONTENTTYPES).length == 0 && 
-			event.getExtensionDeltas(IContentConstants.CONTENT_NAME, ContentTypeBuilder.PT_CONTENTTYPES).length == 0)
-			return;
-		invalidate();
-	}
-
-	/**
-	 * Causes a new catalog to be built afresh next time an API call is made.
-	 */
-	synchronized void invalidate() {
-		if (ContentTypeManager.DEBUGGING && catalog != null)
-			ContentMessages.message("Registry discarded"); //$NON-NLS-1$		
-		catalog = null;
-	}
-
-	/* (non-Javadoc)
-	 * @see IContentTypeManager#addContentTypeChangeListener(IContentTypeChangeListener)
-	 */
-	public void addContentTypeChangeListener(IContentTypeChangeListener listener) {
-		contentTypeListeners.add(listener);
-	}
-
-	/* (non-Javadoc)
-	 * @see IContentTypeManager#removeContentTypeChangeListener(IContentTypeChangeListener)
-	 */
-	public void removeContentTypeChangeListener(IContentTypeChangeListener listener) {
-		contentTypeListeners.remove(listener);
-	}
-
-	public void fireContentTypeChangeEvent(ContentType type) {
-		Object[] listeners = this.contentTypeListeners.getListeners();
-		IContentType eventObject = new ContentTypeHandler(type, type.getCatalog().getGeneration());
-		for (int i = 0; i < listeners.length; i++) {
-			final ContentTypeChangeEvent event = new ContentTypeChangeEvent(eventObject);
-			final IContentTypeChangeListener listener = (IContentTypeChangeListener) listeners[i];
-			ISafeRunnable job = new ISafeRunnable() {
-				public void handleException(Throwable exception) {
-					// already logged in SafeRunner#run()
-				}
-
-				public void run() throws Exception {
-					listener.contentTypeChanged(event);
-				}
-			};
-			SafeRunner.run(job);
-		}
-	}
-
-	public IContentDescription getSpecificDescription(BasicDescription description) {
-		// this is the platform content type manager, no specificities
-		return description;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeMatcher.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeMatcher.java
deleted file mode 100644
index d4ad792..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeMatcher.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.content;
-
-import java.io.*;
-import java.util.*;
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.core.runtime.content.*;
-import org.eclipse.core.runtime.preferences.*;
-import org.osgi.service.prefs.BackingStoreException;
-
-/**
- * @since 3.1
- */
-public class ContentTypeMatcher implements IContentTypeMatcher {
-
-	private IScopeContext context;
-	private IContentTypeManager.ISelectionPolicy policy;
-
-	public ContentTypeMatcher(IContentTypeManager.ISelectionPolicy policy, IScopeContext context) {
-		this.policy = policy;
-		this.context = context;
-	}
-
-	/**
-	 * @see IContentTypeMatcher
-	 */
-	public IContentType findContentTypeFor(InputStream contents, String fileName) throws IOException {
-		ContentTypeCatalog currentCatalog = getCatalog();
-		IContentType[] all = currentCatalog.findContentTypesFor(this, contents, fileName);
-		return all.length > 0 ? new ContentTypeHandler((ContentType) all[0], currentCatalog.getGeneration()) : null;
-	}
-
-	/**
-	 * @see IContentTypeMatcher
-	 */
-	public IContentType findContentTypeFor(String fileName) {
-		// basic implementation just gets all content types
-		ContentTypeCatalog currentCatalog = getCatalog();
-		IContentType[] associated = currentCatalog.findContentTypesFor(this, fileName);
-		return associated.length == 0 ? null : new ContentTypeHandler((ContentType) associated[0], currentCatalog.getGeneration());
-	}
-
-	/**
-	 * @see IContentTypeMatcher
-	 */
-	public IContentType[] findContentTypesFor(InputStream contents, String fileName) throws IOException {
-		ContentTypeCatalog currentCatalog = getCatalog();
-		IContentType[] types = currentCatalog.findContentTypesFor(this, contents, fileName);
-		IContentType[] result = new IContentType[types.length];
-		int generation = currentCatalog.getGeneration();
-		for (int i = 0; i < result.length; i++)
-			result[i] = new ContentTypeHandler((ContentType) types[i], generation);
-		return result;
-	}
-
-	/**
-	 * @see IContentTypeMatcher
-	 */
-	public IContentType[] findContentTypesFor(String fileName) {
-		ContentTypeCatalog currentCatalog = getCatalog();
-		IContentType[] types = currentCatalog.findContentTypesFor(this, fileName);
-		IContentType[] result = new IContentType[types.length];
-		int generation = currentCatalog.getGeneration();
-		for (int i = 0; i < result.length; i++)
-			result[i] = new ContentTypeHandler((ContentType) types[i], generation);
-		return result;
-	}
-
-	private ContentTypeCatalog getCatalog() {
-		return ContentTypeManager.getInstance().getCatalog();
-	}
-
-	/**
-	 * @see IContentTypeMatcher
-	 */
-	public IContentDescription getDescriptionFor(InputStream contents, String fileName, QualifiedName[] options) throws IOException {
-		return getCatalog().getDescriptionFor(this, contents, fileName, options);
-	}
-
-	/**
-	 * @see IContentTypeMatcher
-	 */
-	public IContentDescription getDescriptionFor(Reader contents, String fileName, QualifiedName[] options) throws IOException {
-		return getCatalog().getDescriptionFor(this, contents, fileName, options);
-	}
-
-	public IScopeContext getContext() {
-		return context;
-	}
-
-	public IContentTypeManager.ISelectionPolicy getPolicy() {
-		return policy;
-	}
-
-	/**
-	 * Enumerates all content types whose settings satisfy the given file spec type mask.
-	 */
-	public Collection getDirectlyAssociated(final ContentTypeCatalog catalog, final String fileSpec, final int typeMask) {
-		//TODO: make sure we include built-in associations as well
-		final IEclipsePreferences root = context.getNode(ContentTypeManager.CONTENT_TYPE_PREF_NODE);
-		final Set result = new HashSet(3);
-		try {
-			root.accept(new IPreferenceNodeVisitor() {
-				public boolean visit(IEclipsePreferences node) {
-					if (node == root)
-						return true;
-					String[] fileSpecs = ContentTypeSettings.getFileSpecs(node, typeMask);
-					for (int i = 0; i < fileSpecs.length; i++)
-						if (fileSpecs[i].equalsIgnoreCase(fileSpec)) {
-							ContentType associated = catalog.getContentType(node.name());
-							if (associated != null)
-								result.add(associated);
-							break;
-						}
-					return false;
-				}
-
-			});
-		} catch (BackingStoreException bse) {
-			ContentType.log(ContentMessages.content_errorLoadingSettings, bse);
-		}
-		return result == null ? Collections.EMPTY_SET : result;
-	}
-
-	public IContentDescription getSpecificDescription(BasicDescription description) {
-		if (description == null || ContentTypeManager.getInstance().getContext().equals(getContext()))
-			// no need for specific content descriptions
-			return description;
-		// default description
-		if (description instanceof DefaultDescription)
-			// return an context specific description instead
-			return new DefaultDescription(new ContentTypeSettings((ContentType) description.getContentTypeInfo(), context));
-		// non-default description
-		// replace info object with context specific settings
-		((ContentDescription) description).setContentTypeInfo(new ContentTypeSettings((ContentType) description.getContentTypeInfo(), context));
-		return description;
-	}
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeSettings.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeSettings.java
deleted file mode 100644
index dca05a9..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeSettings.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.content;
-
-import java.util.List;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.content.IContentDescription;
-import org.eclipse.core.runtime.content.IContentTypeSettings;
-import org.eclipse.core.runtime.preferences.IScopeContext;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.service.prefs.BackingStoreException;
-import org.osgi.service.prefs.Preferences;
-
-public class ContentTypeSettings implements IContentTypeSettings, IContentTypeInfo {
-
-	private ContentType contentType;
-	private IScopeContext context;
-
-	static void addFileSpec(IScopeContext context, String contentTypeId, String fileSpec, int type) throws CoreException {
-		Preferences contentTypeNode = ContentTypeManager.getInstance().getPreferences(context).node(contentTypeId);
-		String key = ContentType.getPreferenceKey(type);
-		List existingValues = Util.parseItemsIntoList(contentTypeNode.get(key, null));
-		for (int i = 0; i < existingValues.size(); i++)
-			if (((String) existingValues.get(i)).equalsIgnoreCase(fileSpec))
-				// don't do anything if already exists
-				return;
-		existingValues.add(fileSpec);
-		// set new preference value		
-		String newValue = Util.toListString(existingValues.toArray());
-		ContentType.setPreference(contentTypeNode, key, newValue);
-		try {
-			contentTypeNode.flush();
-		} catch (BackingStoreException bse) {
-			String message = NLS.bind(ContentMessages.content_errorSavingSettings, contentTypeId);
-			IStatus status = new Status(IStatus.ERROR, ContentMessages.OWNER_NAME, 0, message, bse);
-			throw new CoreException(status);
-		}
-	}
-
-	static String[] getFileSpecs(IScopeContext context, String contentTypeId, int type) {
-		Preferences contentTypeNode = ContentTypeManager.getInstance().getPreferences(context).node(contentTypeId);
-		return getFileSpecs(contentTypeNode, type);
-	}
-
-	static String[] getFileSpecs(Preferences contentTypeNode, int type) {
-		String key = ContentType.getPreferenceKey(type);
-		String existing = contentTypeNode.get(key, null);
-		return Util.parseItems(existing);
-	}
-
-	public static String internalGetDefaultProperty(ContentType current, final Preferences contentTypePrefs, final QualifiedName key) throws BackingStoreException {
-		String id = current.getId();
-		if (contentTypePrefs.nodeExists(id)) {
-			Preferences contentTypeNode = contentTypePrefs.node(id);
-			String propertyValue = contentTypeNode.get(key.getLocalName(), null);
-			if (propertyValue != null)
-				return propertyValue;
-		}
-		// try built-in settings
-		String propertyValue = current.basicGetDefaultProperty(key);
-		if (propertyValue != null)
-			return propertyValue;
-		// try ancestor
-		ContentType baseType = (ContentType) current.getBaseType();
-		return baseType == null ? null : internalGetDefaultProperty(baseType, contentTypePrefs, key);
-	}
-
-	static void removeFileSpec(IScopeContext context, String contentTypeId, String fileSpec, int type) throws CoreException {
-		Preferences contentTypeNode = ContentTypeManager.getInstance().getPreferences(context).node(contentTypeId);
-		String key = ContentType.getPreferenceKey(type);
-		String existing = contentTypeNode.get(key, null);
-		if (existing == null)
-			// content type has no settings - nothing to do
-			return;
-		List existingValues = Util.parseItemsIntoList(contentTypeNode.get(key, null));
-		int index = -1;
-		int existingCount = existingValues.size();
-		for (int i = 0; index == -1 && i < existingCount; i++)
-			if (((String) existingValues.get(i)).equalsIgnoreCase(fileSpec))
-				index = i;
-		if (index == -1)
-			// did not find the file spec to be removed - nothing to do
-			return;
-		existingValues.remove(index);
-		// set new preference value
-		String newValue = Util.toListString(existingValues.toArray());
-		ContentType.setPreference(contentTypeNode, key, newValue);
-		try {
-			contentTypeNode.flush();
-		} catch (BackingStoreException bse) {
-			String message = NLS.bind(ContentMessages.content_errorSavingSettings, contentTypeId);
-			IStatus status = new Status(IStatus.ERROR, ContentMessages.OWNER_NAME, 0, message, bse);
-			throw new CoreException(status);
-		}
-	}
-
-	public ContentTypeSettings(ContentType contentType, IScopeContext context) {
-		this.context = context;
-		this.contentType = contentType;
-	}
-
-	/*
-	 * @see IContentTypeSettings 
-	 */
-	public void addFileSpec(String fileSpec, int type) throws CoreException {
-		addFileSpec(context, contentType.getId(), fileSpec, type);
-	}
-
-	public ContentType getContentType() {
-		return contentType;
-	}
-
-	public String getDefaultCharset() {
-		return getDefaultProperty(IContentDescription.CHARSET);
-	}
-
-	public String getDefaultProperty(final QualifiedName key) {
-		final Preferences contentTypePrefs = ContentTypeManager.getInstance().getPreferences(context);
-		try {
-			String propertyValue = internalGetDefaultProperty(contentType, contentTypePrefs, key);
-			return "".equals(propertyValue) ? null : propertyValue; //$NON-NLS-1$
-		} catch (BackingStoreException e) {
-			return null;
-		}
-	}
-
-	public String[] getFileSpecs(int type) {
-		return getFileSpecs(context, contentType.getId(), type);
-	}
-
-	public String getId() {
-		return contentType.getId();
-	}
-
-	public void removeFileSpec(String fileSpec, int type) throws CoreException {
-		removeFileSpec(context, contentType.getId(), fileSpec, type);
-	}
-
-	public void setDefaultCharset(String userCharset) throws CoreException {
-		Preferences contentTypeNode = ContentTypeManager.getInstance().getPreferences(context).node(contentType.getId());
-		ContentType.setPreference(contentTypeNode, ContentType.PREF_DEFAULT_CHARSET, userCharset);
-		try {
-			contentTypeNode.flush();
-		} catch (BackingStoreException bse) {
-			String message = NLS.bind(ContentMessages.content_errorSavingSettings, contentType.getId());
-			IStatus status = new Status(IStatus.ERROR, ContentMessages.OWNER_NAME, 0, message, bse);
-			throw new CoreException(status);
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeVisitor.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeVisitor.java
deleted file mode 100644
index 5b1ff55..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ContentTypeVisitor.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.content;
-
-public interface ContentTypeVisitor {
-	int CONTINUE = 0;
-	int RETURN = 1;
-	int STOP = 2;
-
-	/**
-	 * @return CONTINUE, RETURN or STOP
-	 */
-	public int visit(ContentType contentType);
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/DefaultDescription.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/DefaultDescription.java
deleted file mode 100644
index 6112008..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/DefaultDescription.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.content;
-
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.core.runtime.content.IContentDescription;
-
-/**
- * A content description for which all  properties have default values. 
- */
-public final class DefaultDescription extends BasicDescription {
-
-	public DefaultDescription(IContentTypeInfo contentTypeInfo) {
-		super(contentTypeInfo);
-	}
-
-	public boolean equals(Object obj) {
-		if (!(obj instanceof DefaultDescription))
-			return false;
-		// see ContentType.equals()
-		return contentTypeInfo.equals(((DefaultDescription) obj).contentTypeInfo);
-	}
-
-	/**
-	 * @see IContentDescription
-	 */
-	public String getCharset() {
-		return (String) getProperty(CHARSET);
-	}
-
-	/**
-	 * @see IContentDescription
-	 */
-	public Object getProperty(QualifiedName key) {
-		return contentTypeInfo.getDefaultProperty(key);
-	}
-
-	public int hashCode() {
-		return contentTypeInfo.getContentType().hashCode();
-	}
-
-	/**
-	 * @see IContentDescription
-	 */
-	public boolean isRequested(QualifiedName key) {
-		return false;
-	}
-
-	/**
-	 * @see IContentDescription
-	 */
-	public void setProperty(QualifiedName key, Object value) {
-		throw new IllegalStateException();
-	}
-
-	public String toString() {
-		return "{default} : " + contentTypeInfo.getContentType(); //$NON-NLS-1$
-	}
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/FileSpec.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/FileSpec.java
deleted file mode 100644
index 715f56b..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/FileSpec.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.content;
-
-import org.eclipse.core.runtime.content.IContentType;
-
-/**
- * Provides a uniform representation for file specifications, such 
- * as file names, file extensions and regular expressions.
- */
-class FileSpec {
-	final static int BASIC_TYPE = IContentType.FILE_EXTENSION_SPEC | IContentType.FILE_NAME_SPEC;
-	private String text;
-	private int type;
-
-	public FileSpec(String text, int type) {
-		this.text = text;
-		this.type = type;
-	}
-
-	public String getText() {
-		return text;
-	}
-
-	public int getType() {
-		return type;
-	}
-
-	public static int getBasicType(int type) {
-		return BASIC_TYPE & type;
-	}
-
-	public boolean equals(Object other) {
-		if (!(other instanceof FileSpec))
-			return false;
-		FileSpec otherFileSpec = (FileSpec) other;
-		return equals(text, otherFileSpec.getType(), false);
-	}
-
-	public boolean equals(final String text, final int otherType, final boolean strict) {
-		return ((!strict && getBasicType(type) == getBasicType(otherType)) || type == otherType) && this.text.equalsIgnoreCase(text);
-	}
-
-	public int hashCode() {
-		return text.hashCode();
-	}
-
-	public static String getMappingKeyFor(String fileSpecText) {
-		return fileSpecText.toLowerCase();
-	}
-
-	public String toString() {
-		return getText();
-	}
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/IContentConstants.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/IContentConstants.java
deleted file mode 100644
index 298b149..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/IContentConstants.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.content;
-
-/**
- * Container for the constants used by this plugin. 
- * 
- * @since org.eclipse.core.contenttype 3.2
- */
-public interface IContentConstants {
-	/**
-	 * Backward compatibility: name of the original runtime plugin
-	 */
-	public static final String RUNTIME_NAME = "org.eclipse.core.runtime"; //$NON-NLS-1$
-
-	/**
-	 * Name of this plugin
-	 */
-	public static final String CONTENT_NAME = "org.eclipse.core.contenttype"; //$NON-NLS-1$
-
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/IContentTypeInfo.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/IContentTypeInfo.java
deleted file mode 100644
index 9d6c7e3..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/IContentTypeInfo.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.content;
-
-import org.eclipse.core.runtime.QualifiedName;
-
-/**
- * @since 3.1
- */
-public abstract interface IContentTypeInfo {
-	/**
-	 * Returns a reference to the corresponding content type. 
-	 */
-	public abstract ContentType getContentType();
-
-	/**
-	 * Returns the default value for the given property, delegating to the
-	 * ancestor type if necessary. 
-	 */
-	public abstract String getDefaultProperty(QualifiedName key);
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ILazySource.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ILazySource.java
deleted file mode 100644
index e25c0aa..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/ILazySource.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.content;
-
-/**
- * A common abstract view for lazy character/binary input streams.
- * 
- * @since 3.1
- */
-public interface ILazySource {
-	/**
-	 * @return a boolean indicating whether this stream is character or byte-based 
-	 */
-	public boolean isText();
-
-	/**
-	 * Rewinds the stream.
-	 */
-	public void rewind();
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/LazyInputStream.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/LazyInputStream.java
deleted file mode 100644
index 0f48b96..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/LazyInputStream.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.content;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-public class LazyInputStream extends InputStream implements ILazySource {
-	private int blockCapacity;
-	byte[][] blocks = {};
-	private int bufferSize;
-	private InputStream in;
-	private int mark;
-	private int offset;
-
-	public LazyInputStream(InputStream in, int blockCapacity) {
-		this.in = in;
-		this.blockCapacity = blockCapacity;
-	}
-
-	public int available() throws IOException {
-		try {
-			return bufferSize - offset + in.available();
-		} catch (IOException ioe) {
-			throw new LowLevelIOException(ioe);
-		}
-	}
-
-	private int computeBlockSize(int blockIndex) {
-		if (blockIndex < blocks.length - 1)
-			return blockCapacity;
-		int blockSize = bufferSize % blockCapacity;
-		return blockSize == 0 ? blockCapacity : blockSize;
-	}
-
-	private int copyFromBuffer(byte[] userBuffer, int userOffset, int needed) {
-		int copied = 0;
-		int current = offset / blockCapacity;
-		while ((needed - copied) > 0 && current < blocks.length) {
-			int blockSize = computeBlockSize(current);
-			int offsetInBlock = offset % blockCapacity;
-			int availableInBlock = blockSize - offsetInBlock;
-			int toCopy = Math.min(availableInBlock, needed - copied);
-			System.arraycopy(blocks[current], offsetInBlock, userBuffer, userOffset + copied, toCopy);
-			copied += toCopy;
-			current++;
-			offset += toCopy;
-		}
-		return copied;
-	}
-
-	private void ensureAvailable(long bytesToRead) throws IOException {
-		int loadedBlockSize = blockCapacity;
-		while (bufferSize < offset + bytesToRead && loadedBlockSize == blockCapacity) {
-			try {
-				loadedBlockSize = loadBlock();
-			} catch (IOException e) {
-				throw new LowLevelIOException(e);
-			}
-			bufferSize += loadedBlockSize;
-		}
-	}
-
-	// for testing purposes
-	protected int getBlockCount() {
-		return blocks.length;
-	}
-
-	// for testing purposes
-	protected int getBufferSize() {
-		return bufferSize;
-	}
-
-	// for testing purposes
-	protected int getMark() {
-		return mark;
-	}
-
-	// for testing purposes
-	protected int getOffset() {
-		return offset;
-	}
-
-	public boolean isText() {
-		return false;
-	}
-
-	private int loadBlock() throws IOException {
-		// read a block from the underlying stream
-		byte[] newBlock = new byte[blockCapacity];
-		int readCount = in.read(newBlock);
-		if (readCount == -1)
-			return 0;
-		// expand blocks array
-		byte[][] tmpBlocks = new byte[blocks.length + 1][];
-		System.arraycopy(blocks, 0, tmpBlocks, 0, blocks.length);
-		blocks = tmpBlocks;
-		blocks[blocks.length - 1] = newBlock;
-		return readCount;
-	}
-
-	public void mark(int readlimit) {
-		mark = offset;
-	}
-
-	public boolean markSupported() {
-		return true;
-	}
-
-	public int read() throws IOException {
-		ensureAvailable(1);
-		if (bufferSize <= offset)
-			return -1;
-		int nextByte = 0xFF & blocks[offset / blockCapacity][offset % blockCapacity];
-		offset++;
-		return nextByte;
-	}
-
-	public int read(byte[] b) throws IOException {
-		return read(b, 0, b.length);
-	}
-
-	public int read(byte[] b, int off, int len) throws IOException {
-		ensureAvailable(len);
-		int copied = copyFromBuffer(b, off, len);
-		return copied == 0 ? -1 : copied;
-	}
-
-	public void reset() {
-		offset = mark;
-	}
-
-	public void rewind() {
-		mark = 0;
-		offset = 0;
-	}
-
-	public long skip(long toSkip) throws IOException {
-		if (toSkip <= 0)
-			return 0;
-		ensureAvailable(toSkip);
-		long skipped = Math.min(toSkip, bufferSize - offset);
-		offset += skipped;
-		return skipped;
-	}
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/LazyReader.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/LazyReader.java
deleted file mode 100644
index 241a76f..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/LazyReader.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.content;
-
-import java.io.IOException;
-import java.io.Reader;
-
-public class LazyReader extends Reader implements ILazySource {
-	private int blockCapacity;
-	char[][] blocks = {};
-	private int bufferSize;
-	private Reader in;
-	private int mark;
-	private int offset;
-
-	public LazyReader(Reader in, int blockCapacity) {
-		this.in = in;
-		this.blockCapacity = blockCapacity;
-	}
-
-	public void close() {
-		// we don't close the underlying stream
-	}
-
-	private int computeBlockSize(int blockIndex) {
-		if (blockIndex < blocks.length - 1)
-			return blockCapacity;
-		int blockSize = bufferSize % blockCapacity;
-		return blockSize == 0 ? blockCapacity : blockSize;
-	}
-
-	private int copyFromBuffer(char[] userBuffer, int userOffset, int needed) {
-		int copied = 0;
-		int current = offset / blockCapacity;
-		while ((needed - copied) > 0 && current < blocks.length) {
-			int blockSize = computeBlockSize(current);
-			int offsetInBlock = offset % blockCapacity;
-			int availableInBlock = blockSize - offsetInBlock;
-			int toCopy = Math.min(availableInBlock, needed - copied);
-			System.arraycopy(blocks[current], offsetInBlock, userBuffer, userOffset + copied, toCopy);
-			copied += toCopy;
-			current++;
-			offset += toCopy;
-		}
-		return copied;
-	}
-
-	private void ensureAvailable(long charsToRead) throws IOException {
-		int loadedBlockSize = blockCapacity;
-		while (bufferSize < offset + charsToRead && loadedBlockSize == blockCapacity) {
-			try {
-				loadedBlockSize = loadBlock();
-			} catch (IOException ioe) {
-				throw new LowLevelIOException(ioe);
-			}
-			bufferSize += loadedBlockSize;
-		}
-	}
-
-	// for testing purposes
-	protected int getBlockCount() {
-		return blocks.length;
-	}
-
-	// for testing purposes
-	protected int getBufferSize() {
-		return bufferSize;
-	}
-
-	// for testing purposes
-	protected int getMark() {
-		return mark;
-	}
-
-	// for testing purposes
-	protected int getOffset() {
-		return offset;
-	}
-
-	public boolean isText() {
-		return true;
-	}
-
-	private int loadBlock() throws IOException {
-		// read a block from the underlying stream
-		char[] newBlock = new char[blockCapacity];
-		int readCount = in.read(newBlock);
-		if (readCount == -1)
-			return 0;
-		// expand blocks array
-		char[][] tmpBlocks = new char[blocks.length + 1][];
-		System.arraycopy(blocks, 0, tmpBlocks, 0, blocks.length);
-		blocks = tmpBlocks;
-		blocks[blocks.length - 1] = newBlock;
-		return readCount;
-	}
-
-	public void mark(int readlimit) {
-		mark = offset;
-	}
-
-	public boolean markSupported() {
-		return true;
-	}
-
-	public int read() throws IOException {
-		ensureAvailable(1);
-		if (bufferSize <= offset)
-			return -1;
-		char nextChar = blocks[offset / blockCapacity][offset % blockCapacity];
-		offset++;
-		return nextChar;
-	}
-
-	public int read(char[] c) throws IOException {
-		return read(c, 0, c.length);
-	}
-
-	public int read(char[] c, int off, int len) throws IOException {
-		ensureAvailable(len);
-		int copied = copyFromBuffer(c, off, len);
-		return copied == 0 ? -1 : copied;
-	}
-
-	public boolean ready() throws IOException {
-		try {
-			return (bufferSize - offset) > 0 || in.ready();
-		} catch (IOException ioe) {
-			throw new LowLevelIOException(ioe);
-		}
-	}
-
-	public void reset() {
-		offset = mark;
-	}
-
-	public void rewind() {
-		mark = 0;
-		offset = 0;
-	}
-
-	public long skip(long toSkip) throws IOException {
-		if (toSkip <= 0)
-			return 0;
-		ensureAvailable(toSkip);
-		long skipped = Math.min(toSkip, bufferSize - offset);
-		offset += skipped;
-		return skipped;
-	}
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/LowLevelIOException.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/LowLevelIOException.java
deleted file mode 100644
index 03f5430..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/LowLevelIOException.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.content;
-
-import java.io.IOException;
-import org.eclipse.core.runtime.Assert;
-
-/**
- * A wrapper for IOExceptions, throw by LazyInputStream/Reader. 
- * Its purpose is to allow one to differentiate
- * between IOExceptions thrown by the base stream/reader from those 
- * thrown by streams/readers built on top of LazyInputStream/Reader.
- * 
- * @see LazyInputStream
- * @see LazyReader
- */
-/* package */class LowLevelIOException extends IOException {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	private IOException actual;
-
-	public LowLevelIOException(IOException actual) {
-		// ensure we don't wrap more than once 
-		Assert.isLegal(!(actual instanceof LowLevelIOException));
-		this.actual = actual;
-	}
-
-	public IOException getActualException() {
-		return actual;
-	}
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/TextContentDescriber.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/TextContentDescriber.java
deleted file mode 100644
index bcdf683..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/TextContentDescriber.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.content;
-
-import java.io.*;
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.core.runtime.content.IContentDescription;
-import org.eclipse.core.runtime.content.ITextContentDescriber;
-
-/**
- * This class provides internal basis for text-based content describers. 
- * 
- * <p>
- * Note: do not add protected/public members to this class if you don't intend to 
- * make them public API.
- * </p>  
- * 
- * @see org.eclipse.core.runtime.content.XMLRootElementContentDescriber
- * @since 3.0
- */
-public class TextContentDescriber implements ITextContentDescriber {
-
-	private final static QualifiedName[] SUPPORTED_OPTIONS = {IContentDescription.BYTE_ORDER_MARK};
-
-	/*
-	 *  (non-Javadoc)
-	 * @see org.eclipse.core.runtime.content.ITextContentDescriber#describe(java.io.Reader, org.eclipse.core.runtime.content.IContentDescription)
-	 */
-	public int describe(Reader contents, IContentDescription description) throws IOException {
-		// we want to be pretty loose on detecting the text content type  
-		return INDETERMINATE;
-	}
-
-	/*
-	 *  (non-Javadoc)
-	 * @see org.eclipse.core.runtime.content.IContentDescriber#describe(java.io.InputStream, org.eclipse.core.runtime.content.IContentDescription)
-	 */
-	public int describe(InputStream contents, IContentDescription description) throws IOException {
-		if (description == null || !description.isRequested(IContentDescription.BYTE_ORDER_MARK))
-			return INDETERMINATE;
-		byte[] bom = getByteOrderMark(contents);
-		if (bom != null)
-			description.setProperty(IContentDescription.BYTE_ORDER_MARK, bom);
-		// we want to be pretty loose on detecting the text content type  		
-		return INDETERMINATE;
-	}
-
-	/*
-	 *  (non-Javadoc)
-	 * @see org.eclipse.core.runtime.content.IContentDescriber#getSupportedOptions()
-	 */
-	public QualifiedName[] getSupportedOptions() {
-		return SUPPORTED_OPTIONS;
-	}
-
-	byte[] getByteOrderMark(InputStream input) throws IOException {
-		int first = (input.read() & 0xFF);//converts unsigned byte to int
-		int second = (input.read() & 0xFF);
-		if (first == -1 || second == -1)
-			return null;
-		//look for the UTF-16 Byte Order Mark (BOM)
-		if (first == 0xFE && second == 0xFF)
-			return IContentDescription.BOM_UTF_16BE;
-		if (first == 0xFF && second == 0xFE)
-			return IContentDescription.BOM_UTF_16LE;
-		int third = (input.read() & 0xFF);
-		if (third == -1)
-			return null;
-		//look for the UTF-8 BOM
-		if (first == 0xEF && second == 0xBB && third == 0xBF)
-			return IContentDescription.BOM_UTF_8;
-		return null;
-	}
-
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/Util.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/Util.java
deleted file mode 100644
index 22a9268..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/Util.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.content;
-
-import java.util.*;
-
-public class Util {
-	public static String[] parseItems(String string) {
-		return parseItems(string, ","); //$NON-NLS-1$
-	}
-
-	public static String[] parseItems(String string, String separator) {
-		if (string == null)
-			return new String[0];
-		StringTokenizer tokenizer = new StringTokenizer(string, separator, true);
-		if (!tokenizer.hasMoreTokens())
-			return new String[] {string.trim()};
-		String first = tokenizer.nextToken().trim();
-		boolean wasSeparator = false;
-		if (first.equals(separator)) {
-			// leading separator
-			first = ""; //$NON-NLS-1$
-			wasSeparator = true;
-		}
-		// simple cases, do not create temporary list
-		if (!tokenizer.hasMoreTokens())
-			return wasSeparator ? /* two empty strings */new String[] {first, first} : /*single non-empty element  */new String[] {first};
-		ArrayList items = new ArrayList();
-		items.add(first);
-		String current;
-		do {
-			current = tokenizer.nextToken().trim();
-			boolean isSeparator = current.equals(separator);
-			if (isSeparator) {
-				if (wasSeparator)
-					items.add(""); //$NON-NLS-1$
-			} else
-				items.add(current);
-			wasSeparator = isSeparator;
-		} while (tokenizer.hasMoreTokens());
-		if (wasSeparator)
-			// trailing separator
-			items.add(""); //$NON-NLS-1$
-		return (String[]) items.toArray(new String[items.size()]);
-	}
-
-	public static List parseItemsIntoList(String string) {
-		return parseItemsIntoList(string, ","); //$NON-NLS-1$
-	}
-
-	public static List parseItemsIntoList(String string, String separator) {
-		List items = new ArrayList(5);
-		if (string == null)
-			return items;
-		StringTokenizer tokenizer = new StringTokenizer(string, separator, true);
-		if (!tokenizer.hasMoreTokens()) {
-			items.add(string.trim());
-			return items;
-		}
-		String first = tokenizer.nextToken().trim();
-		boolean wasSeparator = false;
-		if (first.equals(separator)) {
-			// leading separator
-			first = ""; //$NON-NLS-1$
-			wasSeparator = true;
-		}
-		items.add(first);
-		if (!tokenizer.hasMoreTokens())
-			return items;
-		String current;
-		do {
-			current = tokenizer.nextToken().trim();
-			boolean isSeparator = current.equals(separator);
-			if (isSeparator) {
-				if (wasSeparator)
-					items.add(""); //$NON-NLS-1$
-			} else
-				items.add(current);
-			wasSeparator = isSeparator;
-		} while (tokenizer.hasMoreTokens());
-		if (wasSeparator)
-			// trailing separator
-			items.add(""); //$NON-NLS-1$	
-		return items;
-	}
-
-	public static String toListString(Object[] list) {
-		return toListString(list, ","); //$NON-NLS-1$
-	}
-
-	public static String toListString(Object[] list, String separator) {
-		if (list == null || list.length == 0)
-			return null;
-		StringBuffer result = new StringBuffer();
-		for (int i = 0; i < list.length; i++) {
-			result.append(list[i]);
-			result.append(separator);
-		}
-		// ignore last comma
-		return result.substring(0, result.length() - 1);
-	}
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/XMLContentDescriber.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/XMLContentDescriber.java
deleted file mode 100644
index 3717afa..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/XMLContentDescriber.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.content;
-
-import java.io.*;
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.core.runtime.content.IContentDescription;
-import org.eclipse.core.runtime.content.ITextContentDescriber;
-
-/**
- * A content interpreter for XML files. 
- * This class provides internal basis for XML-based content describers.
- * <p>
- * Note: do not add protected/public members to this class if you don't intend to 
- * make them public API.
- * </p>
- *
- * @see org.eclipse.core.runtime.content.XMLRootElementContentDescriber 
- * @see "http://www.w3.org/TR/REC-xml *"
- */
-public class XMLContentDescriber extends TextContentDescriber implements ITextContentDescriber {
-	private static final QualifiedName[] SUPPORTED_OPTIONS = new QualifiedName[] {IContentDescription.CHARSET, IContentDescription.BYTE_ORDER_MARK};
-	private static final String ENCODING = "encoding="; //$NON-NLS-1$
-	private static final String XML_PREFIX = "<?xml "; //$NON-NLS-1$
-
-	public int describe(InputStream input, IContentDescription description) throws IOException {
-		byte[] bom = getByteOrderMark(input);
-		String xmlDeclEncoding = "UTF-8"; //$NON-NLS-1$
-		input.reset();
-		if (bom != null) {
-			if (bom == IContentDescription.BOM_UTF_16BE)
-				xmlDeclEncoding = "UTF-16BE"; //$NON-NLS-1$
-			else if (bom == IContentDescription.BOM_UTF_16LE)
-				xmlDeclEncoding = "UTF-16LE"; //$NON-NLS-1$
-			// skip BOM to make comparison simpler
-			input.skip(bom.length);
-			// set the BOM in the description if requested
-			if (description != null && description.isRequested(IContentDescription.BYTE_ORDER_MARK))
-				description.setProperty(IContentDescription.BYTE_ORDER_MARK, bom);
-		}
-		byte[] xmlPrefixBytes = XML_PREFIX.getBytes(xmlDeclEncoding);
-		byte[] prefix = new byte[xmlPrefixBytes.length];
-		if (input.read(prefix) < prefix.length)
-			// there is not enough info to say anything
-			return INDETERMINATE;
-		for (int i = 0; i < prefix.length; i++)
-			if (prefix[i] != xmlPrefixBytes[i])
-				// we don't have a XMLDecl... there is not enough info to say anything
-				return INDETERMINATE;
-		if (description == null)
-			return VALID;
-		// describe charset if requested
-		if (description.isRequested(IContentDescription.CHARSET)) {
-			String fullXMLDecl = readFullXMLDecl(input, xmlDeclEncoding);
-			if (fullXMLDecl != null) {
-				String charset = getCharset(fullXMLDecl);
-				if (charset != null && !"UTF-8".equalsIgnoreCase(charset)) //$NON-NLS-1$
-					// only set property if value is not default (avoid using a non-default content description)
-					description.setProperty(IContentDescription.CHARSET, getCharset(fullXMLDecl));
-			}
-		}
-		return VALID;
-	}
-
-	private String readFullXMLDecl(InputStream input, String unicodeEncoding) throws IOException {
-		byte[] xmlDecl = new byte[100];
-		int c = 0;
-		// looks for XMLDecl ending char (?)
-		int read = 0;
-		while (read < xmlDecl.length && (c = input.read()) != -1 && c != '?')
-			xmlDecl[read++] = (byte) c;
-		return c == '?' ? new String(xmlDecl, 0, read, unicodeEncoding) : null;
-	}
-
-	public int describe(Reader input, IContentDescription description) throws IOException {
-		BufferedReader reader = new BufferedReader(input);
-		String line = reader.readLine();
-		// end of stream
-		if (line == null)
-			return INDETERMINATE;
-		// XMLDecl should be the first string (no blanks allowed)
-		if (!line.startsWith(XML_PREFIX))
-			return INDETERMINATE;
-		if (description == null)
-			return VALID;
-		// describe charset if requested
-		if ((description.isRequested(IContentDescription.CHARSET)))
-			description.setProperty(IContentDescription.CHARSET, getCharset(line));
-		return VALID;
-	}
-
-	private String getCharset(String firstLine) {
-		int encodingPos = firstLine.indexOf(ENCODING);
-		if (encodingPos == -1)
-			return null;
-		char quoteChar = '"';
-		int firstQuote = firstLine.indexOf(quoteChar, encodingPos);
-		if (firstQuote == -1) {
-			quoteChar = '\'';
-			firstQuote = firstLine.indexOf(quoteChar, encodingPos);
-		}
-		if (firstQuote == -1 || firstLine.length() == firstQuote - 1)
-			return null;
-		int secondQuote = firstLine.indexOf(quoteChar, firstQuote + 1);
-		if (secondQuote == -1)
-			return null;
-		return firstLine.substring(firstQuote + 1, secondQuote);
-	}
-
-	public QualifiedName[] getSupportedOptions() {
-		return SUPPORTED_OPTIONS;
-	}
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/XMLRootHandler.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/XMLRootHandler.java
deleted file mode 100644
index 5a2babb..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/XMLRootHandler.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.content;
-
-import java.io.IOException;
-import java.io.StringReader;
-import javax.xml.parsers.*;
-import org.xml.sax.*;
-import org.xml.sax.ext.LexicalHandler;
-import org.xml.sax.helpers.DefaultHandler;
-
-/**
- * A content describer for detecting the name of the top-level element of the
- * DTD system identifier in an XML file. This supports two parameters:
- * <code>DTD_TO_FIND</code> and <code>ELEMENT_TO_FIND</code>. This is done
- * using the <code>IExecutableExtension</code> mechanism. If the
- * <code>":-"</code> method is used, then the value is treated as the
- * <code>ELEMENT_TO_FIND</code>.
- * 
- * @since 3.0
- */
-public final class XMLRootHandler extends DefaultHandler implements LexicalHandler {
-	/**
-	 * An exception indicating that the parsing should stop. This is usually
-	 * triggered when the top-level element has been found.
-	 * 
-	 * @since 3.0
-	 */
-	private class StopParsingException extends SAXException {
-		/**
-		 * All serializable objects should have a stable serialVersionUID
-		 */
-		private static final long serialVersionUID = 1L;
-
-		/**
-		 * Constructs an instance of <code>StopParsingException</code> with a
-		 * <code>null</code> detail message.
-		 */
-		public StopParsingException() {
-			super((String) null);
-		}
-	}
-
-	/**
-	 * Should we check the root element?
-	 */
-	private boolean checkRoot;
-	/**
-	 * The system identifier for the DTD that was found while parsing the XML.
-	 * This member variable is <code>null</code> unless the file has been
-	 * parsed successful to the point of finding the DTD's system identifier.
-	 */
-	private String dtdFound = null;
-	/**
-	 * This is the name of the top-level element found in the XML file. This
-	 * member variable is <code>null</code> unless the file has been parsed
-	 * successful to the point of finding the top-level element.
-	 */
-	private String elementFound = null;
-
-	public XMLRootHandler(boolean checkRoot) {
-		this.checkRoot = checkRoot;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.xml.sax.ext.LexicalHandler#comment(char[], int, int)
-	 */
-	public final void comment(final char[] ch, final int start, final int length) {
-		// Not interested.
-	}
-
-	/**
-	 * Creates a new SAX parser for use within this instance.
-	 * 
-	 * @return The newly created parser.
-	 * 
-	 * @throws ParserConfigurationException
-	 *             If a parser of the given configuration cannot be created.
-	 * @throws SAXException
-	 *             If something in general goes wrong when creating the parser.
-	 * @throws SAXNotRecognizedException
-	 *             If the <code>XMLReader</code> does not recognize the
-	 *             lexical handler configuration option.
-	 * @throws SAXNotSupportedException
-	 *             If the <code>XMLReader</code> does not support the lexical
-	 *             handler configuration option.
-	 */
-	private final SAXParser createParser(SAXParserFactory parserFactory) throws ParserConfigurationException, SAXException, SAXNotRecognizedException, SAXNotSupportedException {
-		// Initialize the parser.
-		final SAXParser parser = parserFactory.newSAXParser();
-		final XMLReader reader = parser.getXMLReader();
-		reader.setProperty("http://xml.org/sax/properties/lexical-handler", this); //$NON-NLS-1$
-		// disable DTD validation (bug 63625)
-		try {
-			//	be sure validation is "off" or the feature to ignore DTD's will not apply
-			reader.setFeature("http://xml.org/sax/features/validation", false); //$NON-NLS-1$
-			reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); //$NON-NLS-1$
-		} catch (SAXNotRecognizedException e) {
-			// not a big deal if the parser does not recognize the features
-		} catch (SAXNotSupportedException e) {
-			// not a big deal if the parser does not support the features
-		}
-		return parser;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.xml.sax.ext.LexicalHandler#endCDATA()
-	 */
-	public final void endCDATA() {
-		// Not interested.
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.xml.sax.ext.LexicalHandler#endDTD()
-	 */
-	public final void endDTD() {
-		// Not interested.
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.xml.sax.ext.LexicalHandler#endEntity(java.lang.String)
-	 */
-	public final void endEntity(final String name) {
-		// Not interested.
-	}
-
-	public String getDTD() {
-		return dtdFound;
-	}
-
-	public String getRootName() {
-		return elementFound;
-	}
-
-	public boolean parseContents(InputSource contents) throws IOException, ParserConfigurationException, SAXException {
-		// Parse the file into we have what we need (or an error occurs).
-		try {
-			SAXParserFactory factory = ContentOSGiUtils.getDefault().getFactory();
-			if (factory == null)
-				return false;
-			final SAXParser parser = createParser(factory);
-			// to support external entities specified as relative URIs (see bug 63298)
-			contents.setSystemId("/"); //$NON-NLS-1$
-			parser.parse(contents, this);
-		} catch (StopParsingException e) {
-			// Abort the parsing normally. Fall through...
-		}
-		return true;
-	}
-
-	/*
-	 * Resolve external entity definitions to an empty string.  This is to speed
-	 * up processing of files with external DTDs.  Not resolving the contents 
-	 * of the DTD is ok, as only the System ID of the DTD declaration is used.
-	 * @see org.xml.sax.helpers.DefaultHandler#resolveEntity(java.lang.String, java.lang.String)
-	 */
-	public InputSource resolveEntity(String publicId, String systemId) throws SAXException {
-		return new InputSource(new StringReader("")); //$NON-NLS-1$
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.xml.sax.ext.LexicalHandler#startCDATA()
-	 */
-	public final void startCDATA() {
-		// Not interested.
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.xml.sax.ext.LexicalHandler#startDTD(java.lang.String,
-	 *      java.lang.String, java.lang.String)
-	 */
-	public final void startDTD(final String name, final String publicId, final String systemId) throws SAXException {
-		dtdFound = systemId;
-		// If we don't care about the top-level element, we can stop here.
-		if (!checkRoot)
-			throw new StopParsingException();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.xml.sax.ContentHandler#startElement(java.lang.String,
-	 *      java.lang.String, java.lang.String, org.xml.sax.Attributes)
-	 */
-	public final void startElement(final String uri, final String elementName, final String qualifiedName, final Attributes attributes) throws SAXException {
-		elementFound = elementName;
-		throw new StopParsingException();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.xml.sax.ext.LexicalHandler#startEntity(java.lang.String)
-	 */
-	public final void startEntity(final String name) {
-		// Not interested.
-	}
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/messages.properties b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/messages.properties
deleted file mode 100644
index 6e3bba2..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/internal/content/messages.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-### Content type manager
-content_badInitializationData = Invalid initialization data for \"{0}\".
-content_errorReadingContents = Error reading contents using content type: {0}.
-content_errorSavingSettings = Failed saving settings for content type {0}.
-content_errorLoadingSettings = Failed loading content type settings.
-content_invalidContentDescriber = Could not create content describer for {0}. Content type has been disabled.
-content_invalidProperty = Ignored invalid property \"{0}\" for content type {1}.
-content_missingIdentifier = Content type {0} has no identifier. Content type has been disabled.
-content_missingName = Content type {0} has no name. Content type has been disabled.
-content_parserConfiguration = XML parser configuration error during content description.
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/BinarySignatureDescriber.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/BinarySignatureDescriber.java
deleted file mode 100644
index ea7142b..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/BinarySignatureDescriber.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.content;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.*;
-import org.eclipse.core.internal.content.ContentMessages;
-import org.eclipse.core.runtime.*;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * A content describer for binary formats that present some 
- * simple signature at a known, fixed offset.
- * <p>
- * This executable extension supports three parameters:
- * "signature", "offset" and "required", the first one being mandatory. 
- * If the
- * <code>":-"</code> method is used, then the value is treated as the
- * "signature".
- * </p> 
- * <p>
- * The "signature" parameter is a sequence of hex codes, one for each byte in 
- * the signature. For example, "CA FE BA BE" would be a signature for Java
- * class files.
- * </p>
- * <p>
- * The "offset" parameter is an integer indicating the offset where the 
- * signature's first byte is found. 
- * </p>
- * <p>
- * The "required" parameter is a boolean (default is " true") indicating whether 
- * the absence of a signature should deem the contents validity status as 
- * IContentDescriber.INVALID or IContentDescriber.INDETERMINATE.  
- * </p>
- * <p>
- * This class is not intended to be subclassed or instantiated by clients, 
- * only to be referenced by the "describer" configuration element in
- * extensions to the <code>org.eclipse.core.runtime.contentTypes</code>
- * extension point.
- * </p>
- * 
- * @since 3.0
- */
-public final class BinarySignatureDescriber implements IContentDescriber, IExecutableExtension {
-	private final static String SIGNATURE = "signature"; //$NON-NLS-1$
-	private final static String OFFSET = "offset"; //$NON-NLS-1$
-	private static final Object REQUIRED = "required"; //$NON-NLS-1$
-	private byte[] signature;
-	private int offset;
-	private boolean required = true;
-
-	/* (Intentionally not included in javadoc)
-	 * @see IContentDescriber#describe(InputStream, IContentDescription)
-	 */
-	public int describe(InputStream contents, IContentDescription description) throws IOException {
-		byte[] buffer = new byte[signature.length];
-		int notValid = required ? INVALID : INDETERMINATE;
-		if (contents.skip(offset) < offset)
-			return notValid;
-		if (contents.read(buffer) != buffer.length)
-			return notValid;
-		for (int i = 0; i < signature.length; i++)
-			if (signature[i] != buffer[i])
-				return notValid;
-		return VALID;
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IContentDescriber#getSupportedOptions
-	 */
-	public QualifiedName[] getSupportedOptions() {
-		return new QualifiedName[0];
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IExecutableExtension#setInitializationData
-	 */
-	public void setInitializationData(IConfigurationElement config, String propertyName, Object data) throws CoreException {
-		try {
-			if (data instanceof String)
-				signature = parseSignature((String) data);
-			else if (data instanceof Hashtable) {
-				Hashtable parameters = (Hashtable) data;
-				if (!parameters.containsKey(SIGNATURE)) {
-					String message = NLS.bind(ContentMessages.content_badInitializationData, XMLRootElementContentDescriber.class.getName());
-					throw new CoreException(new Status(IStatus.ERROR, ContentMessages.OWNER_NAME, 0, message, null));
-				}
-				signature = parseSignature((String) parameters.get(SIGNATURE));
-				if (parameters.containsKey(OFFSET))
-					offset = Integer.parseInt((String) parameters.get(OFFSET));
-				if (parameters.containsKey(REQUIRED))
-					required = Boolean.valueOf((String) parameters.get(REQUIRED)).booleanValue();
-			}
-		} catch (NumberFormatException nfe) {
-			String message = NLS.bind(ContentMessages.content_badInitializationData, BinarySignatureDescriber.class.getName());
-			throw new CoreException(new Status(IStatus.ERROR, ContentMessages.OWNER_NAME, 0, message, nfe));
-		}
-	}
-
-	private static byte[] parseSignature(String data) {
-		List bytes = new ArrayList();
-		StringTokenizer tokenizer = new StringTokenizer(data, " \t\n\r\f,"); //$NON-NLS-1$
-		while (tokenizer.hasMoreTokens())
-			bytes.add(new Byte((byte) Integer.parseInt(tokenizer.nextToken().trim(), 16)));
-		byte[] signature = new byte[bytes.size()];
-		for (int i = 0; i < signature.length; i++)
-			signature[i] = ((Byte) bytes.get(i)).byteValue();
-		return signature;
-	}
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentDescriber.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentDescriber.java
deleted file mode 100644
index 4e13faa..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentDescriber.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.content;
-
-import java.io.IOException;
-import java.io.InputStream;
-import org.eclipse.core.runtime.QualifiedName;
-
-/**
- * Content describers know how to retrieve metadata from 
- * contents.
- * <p>
- * Note: It is expected that content describer implementations be declared in a package 
- * that is exempt from plug-in activation (using the Eclipse-AutoStart bundle 
- * manifest header). Since all describers are instantiated when the content type 
- * framework is initialized, failure in complying with this requirement causes 
- * premature activation, which must be avoided. Future implementations of the 
- * framework might refuse to instantiate describers if doing so would trigger 
- * activation of the corresponding plug-in.
- * </p>
- * <p>
- * Describers for text-based content types should implement 
- * <code>ITextContentDescriber</code> instead.
- * </p>
- * <p>
- * Clients may implement this interface.
- * </p>
-
- * @see IContentDescription
- * @since 3.0
- */
-public interface IContentDescriber {
-	/**
-	 * Description result constant, indicating that it was not possible 
-	 * to determine whether the contents were valid for 
-	 * the intended content type.
-	 * 
-	 * @see #describe
-	 */
-	public final static int INDETERMINATE = 1;
-	/**
-	 * Description result constant, indicating the contents are invalid for 
-	 * the intended content type.
-	 * 
-	 * @see #describe
-	 */
-	public final static int INVALID = 0;
-	/**
-	 * Description result constant, indicating the contents are valid for 
-	 * the intended content type.
-	 * 
-	 * @see #describe
-	 */
-	public final static int VALID = 2;
-
-	/**
-	 * Tries to fill a description for the given contents. Returns 
-	 * an <code>int</code> indicating whether the given stream of 
-	 * bytes represents a valid sample for its corresponding content type.
-	 * If no content description is provided, this method should perform 
-	 * content type validation.
-	 * <p>
-	 * The input stream must be kept open, and any IOExceptions while 
-	 * reading the stream should flow to the caller.
-	 * </p>
-	 * 
-	 * @param contents the contents to be examined
-	 * @param description a description to be filled in, or <code>null</code> if 
-	 * only content type validation is to be performed  
-	 * @return one of the following:<ul>
-	 * <li><code>VALID</code></li>,
-	 * <li><code>INVALID</code></li>,
-	 * <li><code>INDETERMINATE</code></li>
-	 * </ul>
-	 * @throws IOException if an I/O error occurs
-	 * @see IContentDescription
-	 * @see #VALID
-	 * @see #INVALID
-	 * @see #INDETERMINATE
-	 */
-	public int describe(InputStream contents, IContentDescription description) throws IOException;
-
-	/**
-	 * Returns the properties supported by this describer. 
-	 *   
-	 * @return the supported properties
-	 * @see #describe
-	 */
-	public QualifiedName[] getSupportedOptions();
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentDescription.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentDescription.java
deleted file mode 100644
index 84c9ea0..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentDescription.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.content;
-
-import org.eclipse.core.internal.content.IContentConstants;
-import org.eclipse.core.runtime.QualifiedName;
-
-/**
- * A content description object contains information about the nature of 
- * arbitrary data.
- * <p>
- * A content description object will always include the content type for the 
- * examined contents, and may also include information on:
- * <ol>
- * <li>charset;</li>
- * <li>byte order mark;</li>
- * <li>other custom properties provided by third-party plug-ins.</li>
- * </ol>
- * </p>
- * <p>
- * <cite>Content describers</cite> provided by plug-ins will fill in most of the
- * properties in a content description object, except for the content type, 
- * what is done by the platform. After a content 
- * description is filled in by a content interpreter, it is marked as immutable
- * by the platform, so calling any of the mutator methods defined in this 
- * interface will cause an <code>IllegalStateException</code> to be thrown.  
- * </p>  
- * <p>
- * Default values for properties can be contributed by plug-ins as part of
- * the content type definition markup.
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @see IContentDescriber  
- * @since 3.0 
- */
-public interface IContentDescription {
-	/**
-	 * Key for the "charset" property.
-	 */
-	public final static QualifiedName CHARSET = new QualifiedName(IContentConstants.RUNTIME_NAME, "charset"); //$NON-NLS-1$
-	/**
-	 * Key for the "byte order mark" property. This property is only meaningful 
-	 * when describing byte streams.  
-	 */
-	public final static QualifiedName BYTE_ORDER_MARK = new QualifiedName(IContentConstants.RUNTIME_NAME, "bom"); //$NON-NLS-1$
-	/**
-	 * Options constant meaning that all properties should be described. 
-	 */
-	public final static QualifiedName[] ALL = null;
-	/**
-	 * Constant that identifies the Byte-Order-Mark for contents encoded with 
-	 * the UTF-8 character encoding scheme. 
-	 */
-	public final static byte[] BOM_UTF_8 = {(byte) 0xEF, (byte) 0xBB, (byte) 0xBF};
-	/**
-	 * Constant that identifies the Byte-Order-Mark for contents encoded with 
-	 * the UTF-16 Big Endian character encoding scheme. 
-	 */
-	public final static byte[] BOM_UTF_16BE = {(byte) 0xFE, (byte) 0xFF};
-	/**
-	 * Constant that identifies the Byte-Order-Mark for contents encoded with 
-	 * the UTF-16 Little Endian character encoding scheme. 
-	 */
-	public final static byte[] BOM_UTF_16LE = {(byte) 0xFF, (byte) 0xFE};
-
-	/**
-	 * Returns whether the given property is requested to be described. This 
-	 * method is intended to allow content describers to determine  which
-	 * properties should be described.
-	 *  
-	 * @param key a key for the property to be verified 
-	 * @return <code>true</code> if the property is to be described, 
-	 * <code>false</code> otherwise
-	 */
-	public boolean isRequested(QualifiedName key);
-
-	/**
-	 * Returns the charset name to be used when reading the contents
-	 * described by this object. 
-	 * <p>
-	 * If a Unicode byte order mark has been found (the 
-	 * <code>BYTE_ORDER_MARK</code> property has been set), 
-	 * a corresponding charset name will be returned (e.g. "UTF-8", 
-	 * "UTF-16"). Otherwise, the value of the <code>CHARSET</code> 
-	 * property will be returned.   
-	 * </p>
-	 * @return a charset name, or <code>null</code>
-	 */
-	public String getCharset();
-
-	/**
-	 * Returns the content type detected. Returns <code>null</code> if the 
-	 * content type could not be determined.
-	 *   
-	 * @return the corresponding content type, or <code>null</code>
-	 */
-	public IContentType getContentType();
-
-	/**
-	 * Returns the value of custom property set by the content describer,
-	 * or the default value for the property, if one has been defined.
-	 * <p>
-	 * The qualifier part of the property name must be the unique identifier
-	 * of the declaring plug-in (e.g. <code>"com.example.plugin"</code>).
-	 * </p>
-	 * 
-	 * @param key the property key
-	 * @return the property value, or <code>null</code>, if the property is not
-	 * found   
-	 */
-	public Object getProperty(QualifiedName key);
-
-	/**
-	 * Sets the given property to the given value. 
-	 * <p>
-	 * The qualifier part of the property name must be the unique identifier
-	 * of the declaring plug-in (e.g. <code>"com.example.plugin"</code>).
-	 * </p>
-	 * <p>
-	 * This method should not be called by clients other than content 
-	 * describers. An attempt to set a property from other contexts will cause
-	 * an <code>IllegalStateException</code> to be thrown. 
-	 * </p>
-	 * 
-	 * @param key the qualified name of the property 
-	 * @param value the property value, or <code>null</code>,
-	 * if the property is to be removed
-	 * @throws IllegalStateException if called after this description has been
-	 * filled in
-	 */
-	public void setProperty(QualifiedName key, Object value);
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentType.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentType.java
deleted file mode 100644
index 55cacaf..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentType.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.content;
-
-import java.io.*;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.core.runtime.preferences.IScopeContext;
-
-/**
- * Content types represent and provide information on file types, such as 
- * associated file names/extensions, default charset, etc.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p> 
- * 
- * @since 3.0
- */
-public interface IContentType extends IContentTypeSettings {
-	/**
-	 * File spec type flag constant, indicating that pre-defined file 
-	 * specifications should not be taken into account.
-	 */
-	public static final int IGNORE_PRE_DEFINED = 0x01;
-	/**
-	 * File spec type flag constant, indicating that user-defined file 
-	 * specifications should not be taken into account.
-	 */
-	public static final int IGNORE_USER_DEFINED = 0x02;
-	/**
-	 * File spec type constant, indicating a file name specification.
-	 */
-	public static final int FILE_NAME_SPEC = 0x04;
-	/**
-	 * File spec type constant, indicating a file extension specification.
-	 */
-	public static final int FILE_EXTENSION_SPEC = 0x08;
-
-	/**
-	 * Returns a reference to this content type's base type. If this content type
-	 * does not have a base type (it is a root type), returns <code>null</code>.
-	 * 
-	 * @return this content type's base type, or <code>null</code>
-	 */
-	public IContentType getBaseType();
-
-	/**
-	 * Returns the default content description for this content type. A default 
-	 * content description is returned by the content type API whenever 
-	 * content analysis could not find any particular information to be described
-	 * about the contents being processed, so all default attributes for the 
-	 * content type in question apply.
-	 * <p>
-	 * Clients doing caching of content descriptions may choose to treat default 
-	 * descriptions in a special manner, since they are easily recoverable 
-	 * through this API.
-	 * </p>  
-	 * 
-	 *  @return a content description
-	 *  @since 3.1
-	 */
-	public IContentDescription getDefaultDescription();
-
-	/**
-	 * Tries to obtain a description for the given contents. 
-	 * <p>
-	 * Any IOExceptions that may occur while reading the given input stream 
-	 * will flow to the caller.  The input stream will not be closed by this 
-	 * operation.
-	 * </p>
-	 *  
-	 * @param contents the contents to be interpreted
-	 * @param options an array of keys for all properties that should be described
-	 * @return a content description if one could be obtained, or 
-	 * <code>null</code>
-	 * @throws IOException if an error occurs while reading the contents
-	 * @see IContentDescription  
-	 */
-	public IContentDescription getDescriptionFor(InputStream contents, QualifiedName[] options) throws IOException;
-
-	/**
-	 * Tries to obtain a description for the given contents. 
-	 * <p>
-	 * Any IOExceptions that may occur while reading the given reader 
-	 * will flow to the caller.  The reader will not be closed by this 
-	 * operation.
-	 * </p>
-	 *  
-	 * @param contents the contents to be interpreted
-	 * @param options an array of keys for all properties that should be described
-	 * @return a content description if one could be obtained, or 
-	 * <code>null</code>
-	 * @throws UnsupportedOperationException if this content type
-	 * has a describer that does not implement 
-	 * <code>ITextContentDescriber</code>
-	 * @throws IOException if an error occurs while reading the contents 
-	 * @see IContentDescription
-	 */
-	public IContentDescription getDescriptionFor(Reader contents, QualifiedName[] options) throws IOException;
-
-	/**
-	 * Returns the default charset for this content type if one has been defined, 
-	 * <code>null</code> otherwise.
-	 * This refinement of the corresponding <code>IContentTypeSettings</code>
-	 * method also takes into account the charset defined by the content type
-	 * provider (or its base content type).
-	 * 
-	 * @return the default charset, or <code>null</code>
-	 */
-	public String getDefaultCharset();
-
-	/**
-	 * Returns file specifications from this content type. The type mask 
-	 * is a bit-wise or of file specification type constants indicating the 
-	 * file specification types of interest. 
-	 * This refinement of the corresponding <code>IContentTypeSettings</code>
-	 * method supports additional flags because it also takes into account the 
-	 * file specifications defined by the content type provider (or its base 
-	 * content type).
-	 * 
-	 * @param type a bit-wise or of file specification type constants. Valid
-	 * flags are:
-	 *<ul>
-	 *<li>one of <code>FILE_EXTENSION_SPEC</code> or 
-	 *<code>FILE_NAME_SPEC</code></li>
-	 *<li>and optionally, one of <code>IGNORE_PRE_DEFINED</code>
-	 *or <code>IGNORE_USER_DEFINED</code></li>
-	 *</ul>
-	 * @return the file specification
-	 * @see #FILE_NAME_SPEC
-	 * @see #FILE_EXTENSION_SPEC
-	 * @see #IGNORE_PRE_DEFINED
-	 * @see #IGNORE_USER_DEFINED
-	 */
-	public String[] getFileSpecs(int type);
-
-	/**
-	 * Returns this content type's unique identifier. Each content type has an 
-	 * identifier by which they can be retrieved from the content type catalog.
-	 * 
-	 * @return this content type's unique identifier
-	 */
-	public String getId();
-
-	/**
-	 * Returns a user-friendly name for this content type.
-	 * 
-	 * @return this content type's name  
-	 */
-	public String getName();
-
-	/**
-	 * Returns whether this content type is associated with the 
-	 * given file name.
-	 * 
-	 * @param fileName the file name
-	 * @return <code>true</code> if this content type is associated with
-	 * the given file name, <code>false</code> otherwise
-	 * @see #isAssociatedWith(String, IScopeContext)
-	 */
-	public boolean isAssociatedWith(String fileName);
-
-	/**
-	 * Returns whether this content type is associated with the 
-	 * given file name in the given preference scope.
-	 * 
-	 * @param fileName the file name
-	 * @param context a preference scope context 
-	 * @return <code>true</code> if this content type is associated with
-	 * the given file name, <code>false</code> otherwise
-	 * @since 3.1
-	 */
-	public boolean isAssociatedWith(String fileName, IScopeContext context);
-
-	/**
-	 * Returns whether this content type is a kind of the given content 
-	 * type. A content type A is a kind of a content type B if:
-	 * <ol>
-	 * <li>A and B are the same content type, or</li> 
-	 * <li>A's base type is B, or</li>
-	 * <li>A's base type is a kind of B.</li>
-	 * </ol>
-	 * 
-	 * @param another a content type 
-	 * @return <code>true</code> if this content type is a kind of the
-	 * given content type, <code>false</code> otherwise
-	 */
-	public boolean isKindOf(IContentType another);
-
-	/**
-	 * Returns the settings for this content type in the given 
-	 * preference context.
-	 * 
-	 * @param context a preference scope context 
-	 * @return setting in the given context
-	 * @throws CoreException if this method fails. Reasons include:
-	 * <ul>
-	 * <li> An error occurred obtaining the settings.</li>
-	 * </ul> 
-	 * @since 3.1
-	 */
-	public IContentTypeSettings getSettings(IScopeContext context) throws CoreException;
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentTypeManager.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentTypeManager.java
deleted file mode 100644
index 425640e..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentTypeManager.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.content;
-
-import java.util.EventObject;
-import org.eclipse.core.runtime.preferences.IScopeContext;
-
-/**
- * The content type manager provides facilities for file name and content-based
- * type lookup and content description.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @see org.eclipse.core.runtime.content.IContentTypeMatcher
- * @see org.eclipse.core.runtime.Platform#getContentTypeManager()
- * @since 3.0
- */
-public interface IContentTypeManager extends IContentTypeMatcher {
-
-	/**
-	 * An event object which describes the details of a change to a 
-	 * content type. 
-	 * <p>
-	 * Types of changes include a change in the file associations or 
-	 * a change in the encoding setting.
-	 * </p>
-	 */
-	public final class ContentTypeChangeEvent extends EventObject {
-		/**
-		 * All serializable objects should have a stable serialVersionUID
-		 */
-		private static final long serialVersionUID = 1L;
-		/*
-		 * The context for the setting that changed.
-		 * 
-		 * @since 3.1
-		 */
-		private IScopeContext context;
-
-		/**
-		 * Constructor for a new content type change event.
-		 * 
-		 * @param source the content type that changed
-		 */
-		public ContentTypeChangeEvent(IContentType source) {
-			super(source);
-		}
-
-		/**
-		 * Constructor for a new content type change event.
-		 * 
-		 * @param source the content type that changed
-		 * @param context the context where a setting changed, or <code>null</code>
-		 * @since 3.1
-		 */
-		public ContentTypeChangeEvent(IContentType source, IScopeContext context) {
-			super(source);
-			this.context = context;
-		}
-
-		/**
-		 * Return the content type object associated with this change event.
-		 * 
-		 * @return the content type
-		 */
-		public IContentType getContentType() {
-			return (IContentType) source;
-		}
-
-		/**
-		 * Return the preference scope where the setting changed, or 
-		 * <code>null</code>, if the change happened in the content type manager 
-		 * default context. 
-		 * 
-		 * @return the context where the change happened, or <code>null</code>
-		 * @since 3.1
-		 */
-		public IScopeContext getContext() {
-			return context;
-		}
-	}
-
-	/**
-	 * A listener to be used to receive content type change events.
-	 * <p>
-	 * Clients who reference the <code>org.eclipse.core.resources</code>
-	 * bundle are encouraged <em>not</em> to use this listener mechanism to
-	 * detect encoding changes. The Core Resources bundle will 
-	 * detect changes to content types and notify clients appropriately
-	 * of potential changes to the encoding of files in the workspace 
-	 * via the resource change mechanism.
-	 * </p>
-	 * <p>
-	 * Clients may implement this interface.
-	 * </p>
-	 */
-	public interface IContentTypeChangeListener {
-
-		/**
-		 * Notification that a content type has changed in the content type manager.
-		 * The given event object contains the content type which changed and must not
-		 * be <code>null</code>.
-		 * 
-		 * @param event the content type change event
-		 */
-		public void contentTypeChanged(ContentTypeChangeEvent event);
-	}
-
-	/**
-	 * A policy for refining the set of content types that
-	 * should be accepted during content type matching operations.
-	 * <p>
-	 * Clients may implement this interface.
-	 * </p>
-	 * 
-	 * @see IContentTypeManager#getMatcher(IContentTypeManager.ISelectionPolicy, IScopeContext)
-	 * @since 3.1
-	 */
-	public interface ISelectionPolicy {
-		/**
-		 * Returns a subset of the given content types sorted by using a custom criterion.
-		 * <p>
-		 * The given array of content types has already been sorted using 
-		 * the platform rules. If this object follows the same rules, further sorting 
-		 * is not necessary.  
-		 * </p>
-		 * <p>
-		 * The type of matching being performed (name, contents or name + contents)
-		 * might affect the outcome for this method. For instance, for file name-only 
-		 * matching, the more general type could have higher priority. For content-based 
-		 * matching,  the more specific content type could be preferred instead.
-		 * </p>
-		 * 
-		 * @param candidates an array containing content types matching some query 
-		 * @param fileName whether it is a file name-based content type matching
-		 * @param content whether its a content-based content type matching
-		 * @return an array of content types
-		 */
-		IContentType[] select(IContentType[] candidates, boolean fileName, boolean content);
-	}
-
-	/**
-	 * Content type identifier constant for platform's primary 
-	 * text-based content type: <code>org.eclipse.core.runtime.text</code>. 
-	 * <p>
-	 * All text-based content types ought to be sub types of the content type 
-	 * identified by this string. This provides a simple way for detecting 
-	 * whether a content type is text-based:
-	 * <pre>
-	 * IContentType text = Platform.getContentTypeManager().getContentType(IContentTypeManager.CT_TEXT);
-	 * IContentType someType = ...;
-	 * boolean isTextBased = someType.isKindOf(text);
-	 * </pre> 
-	 * </p>
-	 */
-	public final static String CT_TEXT = "org.eclipse.core.runtime.text"; //$NON-NLS-1$	
-
-	/**
-	 * Register the given listener for notification of content type changes.
-	 * Calling this method multiple times with the same listener has no effect. The
-	 * given listener argument must not be <code>null</code>.
-	 * 
-	 * @param listener the content type change listener to register
-	 * @see #removeContentTypeChangeListener(IContentTypeManager.IContentTypeChangeListener)
-	 * @see IContentTypeManager.IContentTypeChangeListener
-	 */
-	public void addContentTypeChangeListener(IContentTypeChangeListener listener);
-
-	/**
-	 * Returns all content types known by the platform. 
-	 * <p>
-	 * Returns an empty array if there are no content types available.
-	 * </p>
-	 * 
-	 * @return all content types known by the platform.
-	 */
-	public IContentType[] getAllContentTypes();
-
-	/**
-	 * Returns the content type with the given identifier, or <code>null</code>
-	 * if no such content type is known by the platform.
-	 * 
-	 * @param contentTypeIdentifier the identifier for the content type
-	 * @return the content type, or <code>null</code>
-	 */
-	public IContentType getContentType(String contentTypeIdentifier);
-
-	/**
-	 * Returns a newly created content type matcher using the given content type selection policy
-	 * and preference scope. If the preference scope is <code>null</code>, the default scope 
-	 * is used.
-	 * 
-	 * @param customPolicy a selection policy
-	 * @param context a user preference context to be used by the matcher, or <code>null</code>
-	 * @return a content type matcher that uses the given policy
-	 * @since 3.1 
-	 */
-	public IContentTypeMatcher getMatcher(ISelectionPolicy customPolicy, IScopeContext context);
-
-	/**
-	 * De-register the given listener from receiving notification of content type changes. 
-	 * Calling this method multiple times with the same listener has no
-	 * effect. The given listener argument must not be <code>null</code>.
-	 * 
-	 * @param listener the content type change listener to remove
-	 * @see #addContentTypeChangeListener(IContentTypeManager.IContentTypeChangeListener)
-	 * @see IContentTypeManager.IContentTypeChangeListener
-	 */
-	public void removeContentTypeChangeListener(IContentTypeChangeListener listener);
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentTypeMatcher.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentTypeMatcher.java
deleted file mode 100644
index 6d65274..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentTypeMatcher.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.content;
-
-import java.io.*;
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.core.runtime.preferences.IScopeContext;
-
-/**
- * An object that performs content type matching queries. 
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @see IContentTypeManager#getMatcher(IContentTypeManager.ISelectionPolicy, IScopeContext)
- * @since 3.1
- */
-public interface IContentTypeMatcher {
-	/**
-	 * Returns the preferred content type for the given contents and file name.
-	 * <p>
-	 * Returns <code>null</code> if no associated content types are 
-	 * found.
-	 * </p>
-	 * <p>
-	 * If a file name is not provided, the entire content type registry will be 
-	 * queried. For performance reasons, it is highly recomended 
-	 * to provide a file name if available.
-	 * </p> 
-	 * <p>
-	 * Any IOExceptions that may occur while reading the given input stream 
-	 * will flow to the caller. The input stream will not be closed by this 
-	 * operation.
-	 * </p> 
-	 * 
-	 * @param contents an input stream
-	 * @param fileName the file name associated to the contents, or <code>null</code> 
-	 * @return the preferred content type associated to the given file name, or <code>null</code>
-	 * @throws IOException if an error occurs while reading the contents 
-	 */
-	public IContentType findContentTypeFor(InputStream contents, String fileName) throws IOException;
-
-	/**
-	 * Returns the preferred content type for the given file name. If multiple content types 
-	 * are associated with the given file name, the one considered the most appropriated will
-	 * be returned. If there are no content types associated, <code>null</code> is returned.
-	 * 
-	 * @param fileName the name of the file
-	 * @return the preferred content type associated to the given file name, or <code>null</code>
-	 */
-	public IContentType findContentTypeFor(String fileName);
-
-	/**
-	 * Returns the content types associated to the given contents and file name.
-	 * <p>
-	 * Returns an empty array if no associated content types are found.
-	 * </p>
-	 * <p>
-	 * If a file name is not provided, the entire content type registry will be 
-	 * queried. For performance reasons, it is highly recomended 
-	 * to provide a file name if available.
-	 * </p>
-	 * <p>
-	 * Any IOExceptions that may occur while reading the given input stream 
-	 * will flow to the caller.  The input stream will not be closed by this 
-	 * operation.
-	 * </p> 
-	 * 
-	 * @param contents an input stream
-	 * @param fileName the file name associated to the contents, or <code>null</code> 
-	 * @return all content types associated to the given contents and file name
-	 * @throws IOException if an error occurs while reading the contents
-	 */
-	public IContentType[] findContentTypesFor(InputStream contents, String fileName) throws IOException;
-
-	/**
-	 * Returns all content types known by the platform that are associated to the given file name.
-	 * <p> 
-	 * Returns an empty array if there are no content types associated.
-	 * </p>
-	 * 
-	 * @param fileName the name of the file
-	 * @return all content types associated to the given file spec
-	 */
-	public IContentType[] findContentTypesFor(String fileName);
-
-	/**
-	 * Tries to obtain a description for the given contents and file name. 
-	 * <p>
-	 * Any IOExceptions that may occur while reading the given input stream 
-	 * will flow to the caller.  The input stream will not be closed by this 
-	 * operation.
-	 * </p>
-	 * <p>
-	 * If a file name is not provided, the entire content type registry will be 
-	 * queried. For performance reasons, it is highly recomended 
-	 * to provide a file name if available.
-	 * </p> 
-	 *  
-	 * @param contents the contents to be interpreted
-	 * @param fileName the file name associated to the contents, or <code>null</code>
-	 * @param options an array of keys for all properties that should be 
-	 * described, or <code>IContentDescription.ALL</code>,  for all of them 
-	 * @return a content description if one could be obtained, or <code>null</code>
-	 * @throws IOException if an error occurs while reading the contents
-	 * @see IContentDescription 
-	 */
-	public IContentDescription getDescriptionFor(InputStream contents, String fileName, QualifiedName[] options) throws IOException;
-
-	/**
-	 * Tries to obtain a description for the given contents and file name. 
-	 * <p>
-	 * Any IOExceptions that may occur while reading the given input stream 
-	 * will flow to the caller.  The reader will not be closed by this 
-	 * operation.
-	 * </p>
-	 * <p>
-	 * If a file name is not provided, the entire content type registry will be 
-	 * queried. For performance reasons, it is highly recomended 
-	 * to provide a file name if available.
-	 * </p> 
-	 *  
-	 * @param contents the contents to be interpreted
-	 * @param fileName the file name associated to the contents, or <code>null</code>
-	 * @param options an array of keys for all properties that should be 
-	 * described, or <code>IContentDescription.ALL</code>,  for all of them 
-	 * @return a content description if one could be obtained, or <code>null</code>
-	 * @throws IOException if an error occurs while reading the contents
-	 * @see IContentDescription 
-	 */
-	public IContentDescription getDescriptionFor(Reader contents, String fileName, QualifiedName[] options) throws IOException;
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentTypeSettings.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentTypeSettings.java
deleted file mode 100644
index c2d6502..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/IContentTypeSettings.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.content;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.preferences.IScopeContext;
-
-/**
- * Gives access to the user settings for a content type.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @see IContentType
- * @see IContentType#getSettings(IScopeContext)
- * @since 3.1
- */
-public interface IContentTypeSettings {
-	/**
-	 * File spec type constant, indicating a file extension specification.
-	 */
-	public static final int FILE_EXTENSION_SPEC = 0x08;
-	/**
-	 * File spec type constant, indicating a file name specification.
-	 */
-	public static final int FILE_NAME_SPEC = 0x04;
-
-	/**
-	 * Adds a user-defined file specification to the corresponding content type. Has no 
-	 * effect if the given file specification is already defined.
-	 * 
-	 * @param fileSpec the file specification
-	 * @param type the type of the file specification. One of 
-	 * <code>FILE_NAME_SPEC</code>, 
-	 * <code>FILE_EXTENSION_SPEC</code>.
-	 * @throws IllegalArgumentException if the type bit mask is  
-	 * incorrect
-	 * @throws CoreException if this method fails. Reasons include:
-	 * <ul>
-	 * <li> An error occurred persisting this setting.</li>
-	 * </ul>
-	 * @see #FILE_NAME_SPEC
-	 * @see #FILE_EXTENSION_SPEC	 
-	 */
-	public void addFileSpec(String fileSpec, int type) throws CoreException;
-
-	/**
-	 * Returns the default charset for the corresponding content type if 
-	 * it has been set, or  
-	 * <code>null</code> otherwise.
-	 * 
-	 * @return the default charset, or <code>null</code>
-	 */
-	public String getDefaultCharset();
-
-	/**
-	 * Returns the file specifications for the corresponding content type. The type mask 
-	 * is a bit-wise or of file specification type constants indicating the 
-	 * file specification types of interest.
-	 * 
-	 * @param type a bit-wise or of file specification type constants. Valid
-	 * flags are one of <code>FILE_EXTENSION_SPEC</code> or 
-	 *<code>FILE_NAME_SPEC</code>
-	 * @return the file specification
-	 * @see #FILE_NAME_SPEC
-	 * @see #FILE_EXTENSION_SPEC
-	 */
-	public String[] getFileSpecs(int type);
-
-	/**
-	 * Returns the corresponding content type's unique identifier. Each content 
-	 * type has an identifier by which they can be retrieved from the content 
-	 * type catalog.
-	 * 
-	 * @return the content type unique identifier
-	 */
-	public String getId();
-
-	/**
-	 * Removes a user-defined file specification from the corresponding content type. Has no 
-	 * effect if the given file specification was not defined by the user.
-	 * 
-	 * @param fileSpec the file specification
-	 * @param type the type of the file specification. One of 
-	 * <code>FILE_NAME_SPEC</code>, 
-	 * <code>FILE_EXTENSION_SPEC</code>.
-	 * @throws IllegalArgumentException if the type bit mask is  
-	 * incorrect
-	 * @throws CoreException if this method fails. Reasons include:
-	 * <ul>
-	 * <li> An error occurred persisting this setting.</li>
-	 * </ul>
-	 * @see #FILE_NAME_SPEC
-	 * @see #FILE_EXTENSION_SPEC
-	 */
-	public void removeFileSpec(String fileSpec, int type) throws CoreException;
-
-	/**
-	 * Sets the default charset for the corresponding content type. If 
-	 * <code>null</code> is provided, restores the pre-defined default charset. 
-	 * 
-	 * @param userCharset the new charset for the content type, or
-	 * <code>null</code>  
-	 * @throws CoreException if this method fails. Reasons include:
-	 * <ul>
-	 * <li> An error occurred persisting this setting.</li>
-	 * </ul>
-	 */
-	public void setDefaultCharset(String userCharset) throws CoreException;
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/ITextContentDescriber.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/ITextContentDescriber.java
deleted file mode 100644
index 4d4e6ac..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/ITextContentDescriber.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.content;
-
-import java.io.IOException;
-import java.io.Reader;
-
-/**
- * Text content describers extend basic content describers to provide
- * the ability of scanning character streams (readers). Describers for 
- * text-based content types must implement this interface 
- * instead of <code>IContentDescription</code>.
- * <p>
- * Note: It is expected that content describer implementations be declared in a package 
- * that is exempt from plug-in activation (using the Eclipse-AutoStart bundle 
- * manifest header). Since all describers are instantiated when the content type 
- * framework is initialized, failure in complying with this requirement causes 
- * premature activation, which must be avoided. Future implementations of the 
- * framework might refuse to instantiate describers if doing so would trigger 
- * activation of the corresponding plug-in.
- * </p>
- * <p>
- * Clients may implement this interface.
- * </p>
- * 
- * @see IContentDescription
- * @since 3.0
- */
-public interface ITextContentDescriber extends IContentDescriber {
-	/**
-	 * Tries to fill a description for the given contents. Returns 
-	 * an <code>int</code> indicating whether the given stream of 
-	 * characters represents a valid sample for this describer's corresponding 
-	 * content type. If no content description is provided, this method should 
-	 * only perform content type validation.
-	 * <p>
-	 * The stream provided must be kept open, and any IOExceptions while 
-	 * reading it should flow to the caller.
-	 * </p>
-	 * 
-	 * @param contents the contents to be examined
-	 * @param description a description to be filled in, or <code>null</code> if 
-	 * only content type validation is to be performed  
-	 * @return one of the following:<ul>
-	 * <li><code>VALID</code></li>
-	 * <li><code>INVALID</code></li>
-	 * <li><code>INDETERMINATE</code></li>
-	 * </ul>
-	 * @throws IOException if an I/O error occurs
-	 * @see IContentDescription
-	 * @see #VALID
-	 * @see #INVALID
-	 * @see #INDETERMINATE
-	 */
-	public int describe(Reader contents, IContentDescription description) throws IOException;
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/XMLRootElementContentDescriber.java b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/XMLRootElementContentDescriber.java
deleted file mode 100644
index 3aadbc2..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/XMLRootElementContentDescriber.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.content;
-
-import java.io.*;
-import java.util.Hashtable;
-import javax.xml.parsers.ParserConfigurationException;
-import org.eclipse.core.internal.content.*;
-import org.eclipse.core.internal.runtime.RuntimeLog;
-import org.eclipse.core.runtime.*;
-import org.eclipse.osgi.util.NLS;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-/**
- * A content describer for detecting the name of the top-level element or the
- * DTD system identifier in an XML file.
- * <p>
- * This executable extension supports two parameters:
- * "dtd" and "element". 
- * At least one of them <strong>must</strong> be provided.  If the
- * <code>":-"</code> method is used, then the value is treated as
- * "element".
- * </p>  
- * <p>
- * This class is not intended to be subclassed or instantiated by clients, 
- * only to be referenced by the "describer" configuration element in
- * extensions to the <code>org.eclipse.core.runtime.contentTypes</code>
- * extension point.
- * </p>
- * 
- * @since 3.0
- */
-public final class XMLRootElementContentDescriber extends XMLContentDescriber implements IExecutableExtension {
-	private static final String DTD_TO_FIND = "dtd"; //$NON-NLS-1$
-	private static final String ELEMENT_TO_FIND = "element"; //$NON-NLS-1$
-	/* (Intentionally not included in javadoc)
-	 * The system identifier that we wish to find. This value will be
-	 * initialized by the <code>setInitializationData</code> method. If no
-	 * value is provided, then this means that we don't care what the system
-	 * identifier will be.
-	 */
-	private String dtdToFind = null;
-	/* (Intentionally not included in javadoc)
-	 * The top-level element we are looking for. This value will be initialized
-	 * by the <code>setInitializationData</code> method. If no value is
-	 * provided, then this means that we don't care what the top-level element
-	 * will be.
-	 */
-	private String elementToFind = null;
-
-	/* (Intentionally not included in javadoc)
-	 * Determines the validation status for the given contents.
-	 * 
-	 * @param contents the contents to be evaluated
-	 * @return one of the following:<ul>
-	 * <li><code>VALID</code></li>,
-	 * <li><code>INVALID</code></li>,
-	 * <li><code>INDETERMINATE</code></li>
-	 * </ul>
-	 * @throws IOException
-	 */
-	private int checkCriteria(InputSource contents) throws IOException {
-		XMLRootHandler xmlHandler = new XMLRootHandler(elementToFind != null);
-		try {
-			if (!xmlHandler.parseContents(contents))
-				return INDETERMINATE;
-		} catch (SAXException e) {
-			// we may be handed any kind of contents... it is normal we fail to parse
-			return INDETERMINATE;
-		} catch (ParserConfigurationException e) {
-			// some bad thing happened - force this describer to be disabled
-			String message = ContentMessages.content_parserConfiguration;
-			RuntimeLog.log(new Status(IStatus.ERROR, ContentMessages.OWNER_NAME, 0, message, e));
-			throw new RuntimeException(message);
-		}
-		// Check to see if we matched our criteria.
-		if ((elementToFind != null) && (!elementToFind.equals(xmlHandler.getRootName())))
-			return INDETERMINATE;
-		if ((dtdToFind != null) && (!dtdToFind.equals(xmlHandler.getDTD())))
-			return INDETERMINATE;
-		// We must be okay then.		
-		return VALID;
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IContentDescriber#describe(InputStream, IContentDescription)
-	 */
-	public int describe(InputStream contents, IContentDescription description) throws IOException {
-		// call the basic XML describer to do basic recognition
-		if (super.describe(contents, description) == INVALID)
-			return INVALID;
-		// super.describe will have consumed some chars, need to rewind		
-		contents.reset();
-		// Check to see if we matched our criteria.		
-		return checkCriteria(new InputSource(contents));
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IContentDescriber#describe(Reader, IContentDescription)
-	 */
-	public int describe(Reader contents, IContentDescription description) throws IOException {
-		// call the basic XML describer to do basic recognition
-		if (super.describe(contents, description) == INVALID)
-			return INVALID;
-		// super.describe will have consumed some chars, need to rewind
-		contents.reset();
-		// Check to see if we matched our criteria.
-		return checkCriteria(new InputSource(contents));
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IExecutableExtension#setInitializationData
-	 */
-	public void setInitializationData(final IConfigurationElement config, final String propertyName, final Object data) throws CoreException {
-		if (data instanceof String)
-			elementToFind = (String) data;
-		else if (data instanceof Hashtable) {
-			Hashtable parameters = (Hashtable) data;
-			dtdToFind = (String) parameters.get(DTD_TO_FIND);
-			elementToFind = (String) parameters.get(ELEMENT_TO_FIND);
-		}
-		if (dtdToFind == null && elementToFind == null) {
-			String message = NLS.bind(ContentMessages.content_badInitializationData, XMLRootElementContentDescriber.class.getName());
-			throw new CoreException(new Status(IStatus.ERROR, ContentMessages.OWNER_NAME, 0, message, null));
-		}
-	}
-}
diff --git a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/package.html b/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/package.html
deleted file mode 100644
index fa292a8..0000000
--- a/bundles/org.eclipse.core.contenttype/src/org/eclipse/core/runtime/content/package.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Provides core support for content types.
-<h2>
-Package Specification</h2>
-<p>
-This package specifies API for content type management and automatic 
-content type determination.
-</p>
-<p>
-@since 3.0
-</p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.core.expressions/.classpath b/bundles/org.eclipse.core.expressions/.classpath
deleted file mode 100644
index 065ac06..0000000
--- a/bundles/org.eclipse.core.expressions/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/bundles/org.eclipse.core.expressions/.cvsignore b/bundles/org.eclipse.core.expressions/.cvsignore
deleted file mode 100644
index fe99505..0000000
--- a/bundles/org.eclipse.core.expressions/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-bin
-
diff --git a/bundles/org.eclipse.core.expressions/.options b/bundles/org.eclipse.core.expressions/.options
deleted file mode 100644
index be381a7..0000000
--- a/bundles/org.eclipse.core.expressions/.options
+++ /dev/null
@@ -1,3 +0,0 @@
-# Traces property resolving in the hierarchy of type
-# extensions
-org.eclipse.core.expressions/tracePropertyResolving=false
diff --git a/bundles/org.eclipse.core.expressions/.project b/bundles/org.eclipse.core.expressions/.project
deleted file mode 100644
index 3bf832e..0000000
--- a/bundles/org.eclipse.core.expressions/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.core.expressions</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.core.expressions/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.core.expressions/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index d6dd2e9..0000000
--- a/bundles/org.eclipse.core.expressions/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,66 +0,0 @@
-#Wed May 25 10:22:17 CEST 2005

-eclipse.preferences.version=1

-org.eclipse.jdt.core.builder.cleanOutputFolder=clean

-org.eclipse.jdt.core.builder.duplicateResourceTask=warning

-org.eclipse.jdt.core.builder.invalidClasspath=abort

-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch

-org.eclipse.jdt.core.circularClasspath=error

-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled

-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled

-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled

-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2

-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve

-org.eclipse.jdt.core.compiler.compliance=1.4

-org.eclipse.jdt.core.compiler.debug.lineNumber=generate

-org.eclipse.jdt.core.compiler.debug.localVariable=generate

-org.eclipse.jdt.core.compiler.debug.sourceFile=generate

-org.eclipse.jdt.core.compiler.doc.comment.support=enabled

-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100

-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning

-org.eclipse.jdt.core.compiler.problem.deprecation=warning

-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled

-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled

-org.eclipse.jdt.core.compiler.problem.discouragedReference=error

-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning

-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning

-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore

-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning

-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error

-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=error

-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=error

-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning

-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning

-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private

-org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning

-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error

-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore

-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled

-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public

-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning

-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled

-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private

-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning

-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error

-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error

-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning

-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=error

-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error

-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled

-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error

-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore

-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore

-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore

-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error

-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore

-org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled

-org.eclipse.jdt.core.compiler.problem.unusedImport=error

-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning

-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore

-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled

-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled

-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning

-org.eclipse.jdt.core.compiler.source=1.3

-org.eclipse.jdt.core.incompatibleJDKLevel=ignore

-org.eclipse.jdt.core.incompleteClasspath=error

diff --git a/bundles/org.eclipse.core.expressions/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.core.expressions/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 0305c96..0000000
--- a/bundles/org.eclipse.core.expressions/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,5 +0,0 @@
-#Tue Dec 21 11:05:13 CET 2004
-eclipse.preferences.version=1
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.ondemandthreshold=99
-org.eclipse.jdt.ui.importorder=java;javax;org.eclipse.core.runtime;org.eclipse.core.expressions;org.eclipse.core.internal.expressions;
diff --git a/bundles/org.eclipse.core.expressions/.template b/bundles/org.eclipse.core.expressions/.template
deleted file mode 100644
index d65e0f4..0000000
--- a/bundles/org.eclipse.core.expressions/.template
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<form>
-   <p/><p><b>Tips on working with this plug-in project</b></p><li>For the view of the new plug-in at a glance, go to the <img href="pageImage"/><a href="OverviewPage">Overview</a>.</li><li>You can test the contributions of this plug-in by launching another instance of the workbench. On the <b>Run</b> menu, click <b>Run As</b> and choose <img href="runTimeWorkbenchImage"/><a href="action.run">Run-time Workbench</a> from the available choices.</li><li>You can add more functionality to this plug-in by adding extensions using the <a href="action.newExtension">New Extension Wizard</a>.</li><li>The plug-in project contains Java code that you can debug. Place breakpoints in Java classes. On the <b>Run</b> menu, select <b>Debug As</b> and choose <img href="runTimeWorkbenchImage"/><a href="action.debug">Run-time Workbench</a> from the available choices.</li>
-</form>
diff --git a/bundles/org.eclipse.core.expressions/META-INF/MANIFEST.MF b/bundles/org.eclipse.core.expressions/META-INF/MANIFEST.MF
deleted file mode 100644
index bdc7dc9..0000000
--- a/bundles/org.eclipse.core.expressions/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,13 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.core.expressions; singleton:=true
-Bundle-Version: 3.2.0.qualifier
-Bundle-ClassPath: .
-Bundle-Activator: org.eclipse.core.internal.expressions.ExpressionPlugin
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Export-Package: org.eclipse.core.expressions,
- org.eclipse.core.internal.expressions;x-internal:=true
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.1.0,4.0.0)"
-Eclipse-LazyStart: true
diff --git a/bundles/org.eclipse.core.expressions/about.html b/bundles/org.eclipse.core.expressions/about.html
deleted file mode 100644
index 6f6b96c..0000000
--- a/bundles/org.eclipse.core.expressions/about.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<title>About</title>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.expressions/build.properties b/bundles/org.eclipse.core.expressions/build.properties
deleted file mode 100644
index eb7f1ce..0000000
--- a/bundles/org.eclipse.core.expressions/build.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = plugin.xml,\
-               about.html,\
-               plugin.properties,\
-               .,\
-               .options,\
-               META-INF/
-src.includes = about.html,\
-               schema/
-source.. = src/
diff --git a/bundles/org.eclipse.core.expressions/buildnotes_core-expressions.html b/bundles/org.eclipse.core.expressions/buildnotes_core-expressions.html
deleted file mode 100644
index 910d001..0000000
--- a/bundles/org.eclipse.core.expressions/buildnotes_core-expressions.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-
-<html>
-<head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-   <meta name="Author" content="IBM">
-   <meta name="GENERATOR" content="Mozilla/4.75 [en] (WinNT; U) [Netscape]">
-   <title>Core Expressions Release Notes</title>
-</head>
-<body>
-
-<h1>
-Eclipse Platform Build Notes&nbsp;<br>
-Core Expressions</h1>
-<h3>Mai 7, 2004</h3>
-<h4>Problem Reports Fixed</h4>
-<h4>Implemenation Changes</h4>
-<ul>
-  <li>The ability to resolve a plug-in descriptor via the resolve expression has been removed
-      from the expression language. This was necessary since IPluginDescriptor is deprecated
-      for 3.0 and the functionality was new in 3.0 anyways.</li>
-</ul>
-<h3>March 23, 2004</h3>
-<h4>Problem Reports Fixed</h4>
-<h4>Implemenation Changes</h4>
-<ul>
-  <li>removed the constructor public EvaluationContext(IEvaluationContext parent, Object defaultVariable, 
-  Object selection). Instead of calling this constructor, the following code has to be written:
-  <pre>
-     EvaluationContext evalContext= new EvaluationContext(null, cunit);
-     evalContext.addVariable("selection", cunit); //$NON-NLS-1$
-  </pre>
-  </li>
-  <li> removed the two string constants:
-  <pre>
-     public static final String SYSTEM= "System";  //$NON-NLS-1$
-     public static final String SELECTION= "selection";  //$NON-NLS-1$
-  </pre>
-  </li>
-  <li>added support for custom variable resolver (see new class IVariableResolver). So there is no need
-      to subclass EvaluationContext anymore to add your own resolving strategy.
-  </li>
-  <li>added support for an equals expression. </li>
-</ul>
-
-<h3>March 16, 2004</h3>
-<h4>Problem Reports Fixed</h4>
-<h4>Implemenation Changes</h4>
-The adapt expression now uses the new IAdapterManager API hasAdapter(Object, String) and 
-getAdapter(Object, String). This ensures that the right class loader is used to convert
-the string representing a type into a corresponding Class. However, this change now requires
-that the adapters requested via an adapt expression must be declared in XML using the new
-org.eclipse.core.runtime.adapters extension point.
-</body>
-</html>
-
diff --git a/bundles/org.eclipse.core.expressions/component.xml b/bundles/org.eclipse.core.expressions/component.xml
deleted file mode 100644
index d79e323..0000000
--- a/bundles/org.eclipse.core.expressions/component.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<component xmlns="http://eclipse.org/component"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="http://eclipse.org/component ../component.xsd "
-   name="Expression Language">
- <plugin id="org.eclipse.core.expressions" />
-
- <package name="org.eclipse.core.expressions">
-   <type name= "EvaluationContext" subclass="false"/>
-   <type name= "EvaluationResult" subclass="false"/>
-   <type name= "ExpressionConverter" subclass="false"/>
-   <type name= "ExpressionTagNames" subclass="false"/>
-   <type name= "IEvaluationContext" implement="false"/>
-   <type name= "IPropertyTester" implement="false"/>
- </package>
- 
- <component-depends unrestricted="true"/>
-</component>
diff --git a/bundles/org.eclipse.core.expressions/plugin.properties b/bundles/org.eclipse.core.expressions/plugin.properties
deleted file mode 100644
index c96c176..0000000
--- a/bundles/org.eclipse.core.expressions/plugin.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2004 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-pluginName= Expression Language
-providerName= Eclipse.org
-
-propertyTesterExtensionPoint= Property Tester
diff --git a/bundles/org.eclipse.core.expressions/plugin.xml b/bundles/org.eclipse.core.expressions/plugin.xml
deleted file mode 100644
index d1d1a42..0000000
--- a/bundles/org.eclipse.core.expressions/plugin.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin>
-   
-     <extension-point id="propertyTesters" name="%propertyTesterExtensionPoint" schema="schema/propertyTesters.exsd"/>
-
-</plugin>
diff --git a/bundles/org.eclipse.core.expressions/schema/expressionLanguage.exsd b/bundles/org.eclipse.core.expressions/schema/expressionLanguage.exsd
deleted file mode 100644
index bdca18c..0000000
--- a/bundles/org.eclipse.core.expressions/schema/expressionLanguage.exsd
+++ /dev/null
@@ -1,483 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.core.expressions">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.core.expressions" id="commonExpression" name="Common Expressions"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-   <element name="enablement">
-      <annotation>
-         <documentation>
-            A generic root element. The element can be used inside an extension point to define its enablement expression.
-            The children of an enablement expression are combined using the and operator.
-         </documentation>
-      </annotation>
-      <complexType>
-         <sequence minOccurs="0" maxOccurs="unbounded">
-            <element ref="not"/>
-            <element ref="and"/>
-            <element ref="or"/>
-            <element ref="instanceof"/>
-            <element ref="test"/>
-            <element ref="systemTest"/>
-            <element ref="equals"/>
-            <element ref="count"/>
-            <element ref="with"/>
-            <element ref="resolve"/>
-            <element ref="adapt"/>
-            <element ref="iterate"/>
-         </sequence>
-      </complexType>
-   </element>
-
-   <element name="not">
-      <annotation>
-         <documentation>
-            This element represent a NOT operation on the result of evaluating it&apos;s sub-element expression.
-         </documentation>
-      </annotation>
-      <complexType>
-         <choice>
-            <element ref="not"/>
-            <element ref="and"/>
-            <element ref="or"/>
-            <element ref="instanceof"/>
-            <element ref="test"/>
-            <element ref="systemTest"/>
-            <element ref="equals"/>
-            <element ref="count"/>
-            <element ref="with"/>
-            <element ref="resolve"/>
-            <element ref="adapt"/>
-            <element ref="iterate"/>
-         </choice>
-      </complexType>
-   </element>
-
-   <element name="and">
-      <annotation>
-         <documentation>
-            This element represent an AND operation on the result of evaluating all it&apos;s sub-elements expressions.
-         </documentation>
-      </annotation>
-      <complexType>
-         <sequence minOccurs="0" maxOccurs="unbounded">
-            <element ref="not"/>
-            <element ref="and"/>
-            <element ref="or"/>
-            <element ref="instanceof"/>
-            <element ref="test"/>
-            <element ref="systemTest"/>
-            <element ref="equals"/>
-            <element ref="count"/>
-            <element ref="with"/>
-            <element ref="resolve"/>
-            <element ref="adapt"/>
-            <element ref="iterate"/>
-         </sequence>
-      </complexType>
-   </element>
-
-   <element name="or">
-      <annotation>
-         <documentation>
-            This element represent an  OR operation on the result of evaluating all it&apos;s sub-element expressions.
-         </documentation>
-      </annotation>
-      <complexType>
-         <sequence minOccurs="0" maxOccurs="unbounded">
-            <element ref="not"/>
-            <element ref="and"/>
-            <element ref="or"/>
-            <element ref="instanceof"/>
-            <element ref="test"/>
-            <element ref="systemTest"/>
-            <element ref="equals"/>
-            <element ref="count"/>
-            <element ref="with"/>
-            <element ref="resolve"/>
-            <element ref="adapt"/>
-            <element ref="iterate"/>
-         </sequence>
-      </complexType>
-   </element>
-
-   <element name="instanceof">
-      <annotation>
-         <appInfo>
-            <meta.element labelAttribute="value"/>
-         </appInfo>
-         <documentation>
-            This element is used to perform an instanceof check of the object in focus. The expression returns
-            EvaluationResult.TRUE if the object&apos;s type is a sub type of the type specified by the attribute value.
-            Otherwise EvaluationResult.FALSE is returned.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="value" type="string" use="required">
-            <annotation>
-               <documentation>
-                  a fully qualified name of a class or interface.
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="java.lang.Object"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="test">
-      <annotation>
-         <appInfo>
-            <meta.element labelAttribute="property"/>
-         </appInfo>
-         <documentation>
-            This element is used to evaluate the property state of the object in focus. The set of
-            testable properties can be extended using the propery tester extension point. The test
-            expression returns EvaluationResult.NOT_LOADED if teh property tester doing the actual
-            testing isn&apos;t loaded yet.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="property" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the name of an object&apos;s property to test.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="args" type="string">
-            <annotation>
-               <documentation>
-                  additional arguments passed to the property tester. Multiple arguments are seperated
-                  by commas. Each individual argument is converted into a Java base type using the same
-                  rules as defined for the value attribute of the test expression.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="value" type="string">
-            <annotation>
-               <documentation>
-                  the expected value of the property. Can be omitted if the property 
-                  is a boolean property. The test expression is supposed to return 
-EvaluationResult.TRUE if the property matches the value and EvaluationResult.FALSE
-otherwise. The value attribute is converted into a Java base type using the following
-rules:
-&lt;ul&gt;
- &lt;li&gt;the string &amp;quot;true&amp;quot; is converted into Boolean.TRUE&lt;/li&gt;
- &lt;li&gt;the string &amp;quot;false&amp;quot; is converted into Boolean.FALSE&lt;/li&gt;
- &lt;li&gt;if the string contains a dot then the interpreter tries to convert
- the value into a Float object. If this fails the string is treated as a
- java.lang.String&lt;/li&gt;
- &lt;li&gt;if the string only consists of numbers then the interpreter
- converts the value in an Integer object.&lt;/li&gt;
- &lt;li&gt;in all other cases the string is treated as a java.lang.String&lt;/li&gt;
- &lt;li&gt;the conversion of the string into a Boolean, Float, or Integer can
- be suppressed by surrounding the string with single quotes. For
- example, the attribute value=&amp;quot;&apos;true&apos;&amp;quot; is converted into the
- string &amp;quot;true&amp;quot;&lt;/li&gt;
-&lt;/ul&gt;
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="systemTest">
-      <annotation>
-         <appInfo>
-            <meta.element labelAttribute="value"/>
-         </appInfo>
-         <documentation>
-            Tests a system property by calling the System.getProperty method and compares the result
-            with the value specified through the value attribute.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="property" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the name of an system property to test.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="value" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the expected value of the property. The value is interpreted as a string value.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="equals">
-      <annotation>
-         <appInfo>
-            <meta.element labelAttribute="value"/>
-         </appInfo>
-         <documentation>
-            This element is used to perform an equals check of the object in focus. The expression returns
-            EvaluationResult.TRUE if the object is equal to the value provided by the attribute value. Otherwise
-            EvaluationResult.FALSE is returned.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="value" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the operatand of the equals tests. The value provided as a string is converted into
-                  a Java base type using the same rules as for the value attribute of the test expression.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="count">
-      <annotation>
-         <documentation>
-            This element is used to test the number of elements in a collection.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="value" type="string" use="required">
-            <annotation>
-               <documentation>
-                  an expression to specify the number of elements in a list. Following wildcard
-                  characters can be used:
-                  &lt;dl&gt;
-                    &lt;dt&gt;*&lt;/dt&gt; &lt;dd&gt;any number of elements&lt;/dd&gt;
-                    &lt;dt&gt;?&lt;/dt&gt; &lt;dd&gt;no elements or one element&lt;/dd&gt;
-                    &lt;dt&gt;+&lt;/dt&gt; &lt;dd&gt;one or more elements&lt;/dd&gt;
-                    &lt;dt&gt;!&lt;/dt&gt; &lt;dd&gt;no elements&lt;/dd&gt;
-                    &lt;dt&gt;integer value&lt;/dt&gt; &lt;dd&gt;the list must contain the exact number of elements&lt;/dd&gt;
-                  &lt;/dl&gt;
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="with">
-      <annotation>
-         <appInfo>
-            <meta.element labelAttribute="variable"/>
-         </appInfo>
-         <documentation>
-            This element changes the object to be inspected for all its child element to the object
-            referneced by the given variable. If the variable can not be resolved then the expression
-            will throw a ExpressionException when evaluating it. The children of a with expression 
-            are combined using the and operator.
-         </documentation>
-      </annotation>
-      <complexType>
-         <sequence minOccurs="0" maxOccurs="unbounded">
-            <element ref="not"/>
-            <element ref="and"/>
-            <element ref="or"/>
-            <element ref="instanceof"/>
-            <element ref="test"/>
-            <element ref="systemTest"/>
-            <element ref="equals"/>
-            <element ref="count"/>
-            <element ref="with"/>
-            <element ref="resolve"/>
-            <element ref="adapt"/>
-            <element ref="iterate"/>
-         </sequence>
-         <attribute name="variable" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the name of the variable to be used for further inspection. It is up to the evaluator
-                  of an extension point to provide the variable in the variable pool.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="resolve">
-      <annotation>
-         <appInfo>
-            <meta.element labelAttribute="variable"/>
-         </appInfo>
-         <documentation>
-            This element changes the object to be inspected for all its child element to the object
-            referneced by the given variable. If the variable can not be resolved then the expression
-            will throw a ExpressionException when evaluating it. The children of a with expression 
-            are combined using the and operator.
-         </documentation>
-      </annotation>
-      <complexType>
-         <sequence minOccurs="0" maxOccurs="unbounded">
-            <element ref="not"/>
-            <element ref="and"/>
-            <element ref="or"/>
-            <element ref="instanceof"/>
-            <element ref="test"/>
-            <element ref="systemTest"/>
-            <element ref="equals"/>
-            <element ref="count"/>
-            <element ref="with"/>
-            <element ref="resolve"/>
-            <element ref="adapt"/>
-            <element ref="iterate"/>
-         </sequence>
-         <attribute name="variable" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the name of the variable to be resolved. This variable is then used as the object in focus
-                  for child element evaluation. It is up to the evaluator of an extension point to provide a 
-                  corresponding variable resolver (see IVariableResolver) through the evaluation context passed
-                  to the root expression element when evaluating the expression.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="args" type="string">
-            <annotation>
-               <documentation>
-                  additional arguments passed to the variable resolver. Multiple arguments are seperated
-                  by commas. Each individual argument is converted into a Java base type using the same
-                  rules as defined for the value attribute of the test expression.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="adapt">
-      <annotation>
-         <appInfo>
-            <meta.element labelAttribute="type"/>
-         </appInfo>
-         <documentation>
-            This element is used to adapt the object in focus to the type specified by the attribute
-            type. The expression returns not loaded if either the adapter or the type referenced isn&apos;t
-            loaded yet. It throws a ExpressionException during evaluation if the type name doesn&apos;t exist 
-            at all. The children of an adapt expression are combined using the and operator.
-         </documentation>
-      </annotation>
-      <complexType>
-         <sequence minOccurs="0" maxOccurs="unbounded">
-            <element ref="not"/>
-            <element ref="and"/>
-            <element ref="or"/>
-            <element ref="instanceof"/>
-            <element ref="test"/>
-            <element ref="systemTest"/>
-            <element ref="equals"/>
-            <element ref="count"/>
-            <element ref="with"/>
-            <element ref="resolve"/>
-            <element ref="adapt"/>
-            <element ref="iterate"/>
-         </sequence>
-         <attribute name="type" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the type to which the object in focus is to be adapted.
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="java.lang.Object"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="iterate">
-      <annotation>
-         <documentation>
-            This element is used to iterate over a variable that is of type java.util.Collection. If
-            the object in focus is not of type java.util.Collection then an ExpressionException will
-            be thrown while evaluating the expression.
-         </documentation>
-      </annotation>
-      <complexType>
-         <sequence minOccurs="0" maxOccurs="unbounded">
-            <element ref="not"/>
-            <element ref="and"/>
-            <element ref="or"/>
-            <element ref="instanceof"/>
-            <element ref="test"/>
-            <element ref="systemTest"/>
-            <element ref="equals"/>
-            <element ref="count"/>
-            <element ref="with"/>
-            <element ref="resolve"/>
-            <element ref="adapt"/>
-            <element ref="iterate"/>
-         </sequence>
-         <attribute name="operator">
-            <annotation>
-               <documentation>
-                  either &quot;and&quot; or &quot;or&quot;. The operator defines how the child
-                  elements will be combined. If not specified, &quot;and&quot; will be used.
-               </documentation>
-            </annotation>
-            <simpleType>
-               <restriction base="string">
-                  <enumeration value="or">
-                  </enumeration>
-                  <enumeration value="and">
-                  </enumeration>
-               </restriction>
-            </simpleType>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="since"/>
-      </appInfo>
-      <documentation>
-         Release 3.0
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         Copyright (c) 2001, 2004 IBM Corporation and others.&lt;br&gt;
-All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at &lt;a href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
-      </documentation>
-   </annotation>
-
-</schema>
diff --git a/bundles/org.eclipse.core.expressions/schema/propertyTesters.exsd b/bundles/org.eclipse.core.expressions/schema/propertyTesters.exsd
deleted file mode 100644
index 868241b..0000000
--- a/bundles/org.eclipse.core.expressions/schema/propertyTesters.exsd
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.core.expressions">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.core.expressions" id="propertyTesters" name="Property Testers"/>
-      </appInfo>
-      <documentation>
-         This extension point allows to add properties to an already existing type. Those
-         properties can then be used inside the expression language&apos;s test expression
-         element.
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <sequence>
-            <element ref="propertyTester" minOccurs="0" maxOccurs="unbounded"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  a fully qualified identifier of the target extension point
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  an optional identifier of the extension instance
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  an optional name of the extension instance
-               </documentation>
-               <appInfo>
-                  <meta.attribute translatable="true"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="propertyTester">
-      <complexType>
-         <attribute name="id" type="string" use="required">
-            <annotation>
-               <documentation>
-                  unique identifier for the property tester
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="type" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the type to be extended by this property tester
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="namespace" type="string" use="required">
-            <annotation>
-               <documentation>
-                  a unique id determining the name space the properties are added to
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="properties" type="string" use="required">
-            <annotation>
-               <documentation>
-                  a comma separated list of properties provided by this property tester
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the name of the class that implements the testing methods. The class must be public and extend
-&lt;samp&gt;org.eclipse.core.expressions.PropertyTester&lt;/samp&gt; with a public 0-argument constructor.
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.core.expressions.PropertyTester"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
-         The following is an example of a property tester contribution:
-
-&lt;p&gt;
-&lt;pre&gt;
-  &lt;extension point=&quot;org.eclipse.core.expressions.propertyTesters&quot;&gt;
-    &lt;propertyTester
-      id=&quot;org.eclipse.jdt.ui.IResourceTester&quot;
-      type=&quot;org.eclipse.core.resources.IResource&quot;
-      namespace=&quot;org.eclipse.jdt.ui&quot;
-      properties=&quot;canDelete&quot;
-      class=&quot;org.eclipse.jdt.ui.internal.ResourceTester&quot;&gt;
-    &lt;/propertyTester&gt;
-  &lt;/extension&gt;
-&lt;/pre&gt;
-&lt;/p&gt;
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="since"/>
-      </appInfo>
-      <documentation>
-         3.0
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         The contributed class must extend &lt;code&gt;org.eclipse.core.expressions.PropertyTester&lt;/code&gt;
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         Copyright (c) 2001, 2004 IBM Corporation and others.&lt;br&gt;
-All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at &lt;a href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
-      </documentation>
-   </annotation>
-
-</schema>
diff --git a/bundles/org.eclipse.core.expressions/scripts/exportplugin.xml b/bundles/org.eclipse.core.expressions/scripts/exportplugin.xml
deleted file mode 100644
index 4b2b97b..0000000
--- a/bundles/org.eclipse.core.expressions/scripts/exportplugin.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<project name="org.eclipse.jdt.ui" default="export" basedir="..">
-<!-- build script to create a plugin from org.eclipse.core.expressions -->
-
-	<target name="init">
-		<tstamp/>
-		<property name="destdir" value="../../plugin-export" />
-		<property name="plugin"  value="org.eclipse.core.expressions" />
-		<property name="qualifier" value="zzz${DSTAMP}-${TSTAMP}" />
-		<property name="plugin_version"  value="_3.2.0.${qualifier}" />
-		<property name="dest"  value="${destdir}/${plugin}${plugin_version}" />
-		<property name="destjar"  value="${destdir}/${plugin}${plugin_version}.jar" />
-	</target>
-
-	<target name="build" depends="init">
-    	<eclipse.incrementalBuild project="${plugin}" kind="incr"/>
-	</target>
-
-	<target name="export" depends="build">
-		<mkdir dir="${destdir}" />
-		<delete dir="${dest}" />
-		<mkdir dir="${dest}" />
-		
-		<copy todir="${dest}/META-INF">
-			<fileset dir="META-INF" />
-		</copy>		
-		
-		<replaceregexp file="${dest}/META-INF/MANIFEST.MF" match="Bundle-Version: ((\d)+\.(\d)+\.(\d)+\.)qualifier" replace="Bundle-Version: \1${qualifier}" byline="true" />
-		
-		<delete file="${destjar}" />
-		<zip zipfile="${destjar}">
-			<fileset dir=".">
-			  <include name="plugin.xml" />
-			  <include name="plugin.properties" />
-			  <include name=".options" />
-			  <include name="schema/**" />
-			  <include name="src/**" />
-			</fileset>
-			<fileset dir="bin" />
-			<fileset dir="${dest}">
-			  <include name="META-INF/**" />
-			</fileset>
-		</zip>
-		
-		<delete dir="${dest}" />
-		
-	</target>
-</project>
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/ElementHandler.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/ElementHandler.java
deleted file mode 100644
index 10a9617..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/ElementHandler.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.expressions;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-
-import org.eclipse.core.internal.expressions.CompositeExpression;
-import org.eclipse.core.internal.expressions.StandardElementHandler;
-
-
-/**
- * An element handler converts an {@link IConfigurationElement} into a 
- * corresponding expression object. 
- * <p>
- * The class should be subclassed by clients wishing to provide an element
- * handler for special expressions.
- * </p>
- * @since 3.0 
- */
-public abstract class ElementHandler {
-	
-	private static final ElementHandler INSTANCE= new StandardElementHandler();
-	
-	/**
-	 * The default element handler which can cope with all XML expression elements
-	 * defined by the common expression language.
-	 * 
-	 * @return the default element handler
-	 */
-	public static ElementHandler getDefault() {
-		return INSTANCE;
-	}
-	
-	/**
-	 * Creates the corresponding expression for the given configuration element.
-	 * 
-	 * @param converter the expression converter used to initiate the
-	 *  conversion process
-	 * 
-	 * @param config the configuration element to convert
-	 * 
-	 * @return the corresponding expression
-	 * 
-	 * @throws CoreException if the conversion failed
-	 */
-	public abstract Expression create(ExpressionConverter converter, IConfigurationElement config) throws CoreException;
-	
-	/**
-	 * Converts the children of the given configuration element and adds them 
-	 * to the given composite expression.
-	 * <p>
-	 * Note this is an internal method and should not be called by clients.
-	 * </p> 
-	 * @param converter the converter used to do the actual conversion
-	 * @param element the configuration element for which the children 
-	 *  are to be processed
-	 * @param expression the composite expression representing the result
-	 *  of the conversion
-	 * 
-	 * @throws CoreException if the conversion failed
-	 */
-	protected void processChildren(ExpressionConverter converter, IConfigurationElement element, CompositeExpression expression) throws CoreException {
-		converter.processChildren(element, expression);
-	}
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/EvaluationContext.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/EvaluationContext.java
deleted file mode 100644
index bbdc973..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/EvaluationContext.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.expressions;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.runtime.CoreException;
-
-import org.eclipse.core.internal.expressions.Assert;
-
-/**
- * A default implementation of an evaluation context.
- * <p>
- * Clients may instantiate this default context. The class is
- * not intended to be subclassed by clients.
- * </p> 
- * 
- * @since 3.0
- */
-public class EvaluationContext implements IEvaluationContext {
-
-	private IEvaluationContext fParent;
-	private Object fDefaultVariable;
-	private Map/*<String, Object>*/ fVariables;
-	private IVariableResolver[] fVariableResolvers;
-	
-	/**
-	 * Create a new evaluation context with the given parent and default
-	 * variable.
-	 * 
-	 * @param parent the parent context. Can be <code>null</code>.
-	 * @param defaultVariable the default variable
-	 */
-	public EvaluationContext(IEvaluationContext parent, Object defaultVariable) {
-		Assert.isNotNull(defaultVariable);
-		fParent= parent;
-		fDefaultVariable= defaultVariable;
-	}
-	
-	/**
-	 * Create a new evaluation context with the given parent and default
-	 * variable.
-	 * 
-	 * @param parent the parent context. Can be <code>null</code>.
-	 * @param defaultVariable the default variable
-	 * @param resolvers an array of <code>IVariableResolvers</code> to
-	 *  resolve additional variables.
-	 * 
-	 * @see #resolveVariable(String, Object[])
-	 */
-	public EvaluationContext(IEvaluationContext parent, Object defaultVariable, IVariableResolver[] resolvers) {
-		Assert.isNotNull(defaultVariable);
-		Assert.isNotNull(resolvers);
-		fParent= parent;
-		fDefaultVariable= defaultVariable;
-		fVariableResolvers= resolvers;
-	}
-	
-	/**
-	 * {@inheritDoc}
-	 */
-	public IEvaluationContext getParent() {
-		return fParent;
-	}
-	
-	/**
-	 * {@inheritDoc}
-	 */
-	public IEvaluationContext getRoot() {
-		if (fParent == null)
-			return this;
-		return fParent.getRoot();
-	}
-	
-	/**
-	 * {@inheritDoc}
-	 */
-	public Object getDefaultVariable() {
-		return fDefaultVariable;
-	}
-	
-	/**
-	 * {@inheritDoc}
-	 */
-	public void addVariable(String name, Object value) {
-		Assert.isNotNull(name);
-		Assert.isNotNull(value);
-		if (fVariables == null)
-			fVariables= new HashMap();
-		fVariables.put(name, value);
-	}
-	
-	/**
-	 * {@inheritDoc}
-	 */
-	public Object removeVariable(String name) {
-		Assert.isNotNull(name);
-		if (fVariables == null)
-			return null;
-		return fVariables.remove(name);
-	}
-	
-	/**
-	 * {@inheritDoc}
-	 */
-	public Object getVariable(String name) {
-		Assert.isNotNull(name);
-		Object result= null;
-		if (fVariables != null) {
-			result= fVariables.get(name);
-		}
-		if (result != null)
-			return result;
-		if (fParent != null)
-			return fParent.getVariable(name);
-		return null;
-	}
-	
-	/**
-	 * {@inheritDoc}
-	 */
-	public Object resolveVariable(String name, Object[] args) throws CoreException {
-		if (fVariableResolvers != null && fVariableResolvers.length > 0) {
-			for (int i= 0; i < fVariableResolvers.length; i++) {
-				IVariableResolver resolver= fVariableResolvers[i];
-				Object variable= resolver.resolve(name, args);
-				if (variable != null)
-					return variable;
-			}
-		}
-		if (fParent != null)
-			return fParent.resolveVariable(name, args);
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/EvaluationResult.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/EvaluationResult.java
deleted file mode 100644
index edb4fda..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/EvaluationResult.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.expressions;
-
-import org.eclipse.core.internal.expressions.Assert;
-
-/**
- * An evaluation result represents the result of an expression
- * evaluation. There are exact three instances of evaluation 
- * result. They are: <code>FALSE</code>, <code>TRUE</code> and
- * <code>NOT_LOADED</code>. <code>NOT_LOADED</code> represents
- * the fact that an expression couldn't be evaluated since a
- * plug-in providing certain test expressions isn't loaded yet.
- * <p>
- * In addition the class implements the three operation <code>and
- * </code>, <code>or</code> and <code>not</code>. The operation are
- * defined as follows:
- * </p>
- * <p>
- * The and operation:
- * </p>
- * <table border="1" cellpadding="5">
- *   <colgroup>
- *     <col width="120">
- *     <col width="120">
- *     <col width="120">
- *     <col width="120">
- *   </colgroup>
- *   <tbody>
- *     <tr>
- *       <td><em>AND</em></td>
- *       <td>FALSE</td>
- *       <td>TRUE</td>
- *       <td>NOT_LOADED</td>
- *     </tr>
- *     <tr>
- *       <td>FALSE</td>
- *       <td>FALSE</td>
- *       <td>FALSE</td>
- *       <td>FALSE</td>
- *     </tr>
- *     <tr>
- *       <td>TRUE</td>
- *       <td>FALSE</td>
- *       <td>TRUE</td>
- *       <td>NOT_LOADED</td>
- *     </tr>
- *     <tr>
- *       <td>NOT_LOADED</td>
- *       <td>FALSE</td>
- *       <td>NOT_LOADED</td>
- *       <td>NOT_LOADED</td>
- *     </tr>
- *   </tbody>
- * </table>
- * <p>
- * The or operation:
- * </p>
- * <table border="1" cellpadding="5">
- *   <colgroup>
- *     <col width="120">
- *     <col width="120">
- *     <col width="120">
- *     <col width="120">
- *   </colgroup>
- *   <tbody>
- *     <tr>
- *       <td><em>OR</em></td>
- *       <td>FALSE</td>
- *       <td>TRUE</td>
- *       <td>NOT_LOADED</td>
- *     </tr>
- *     <tr>
- *       <td>FALSE</td>
- *       <td>FALSE</td>
- *       <td>TRUE</td>
- *       <td>NOT_LOADED</td>
- *     </tr>
- *     <tr>
- *       <td>TRUE</td>
- *       <td>TRUE</td>
- *       <td>TRUE</td>
- *       <td>TRUE</td>
- *     </tr>
- *     <tr>
- *       <td>NOT_LOADED</td>
- *       <td>NOT_LOADED</td>
- *       <td>TRUE</td>
- *       <td>NOT_LOADED</td>
- *     </tr>
- *   </tbody>
- * </table>
- * <p>
- * The not operation:
- * </p>
- * <table border="1" cellpadding="5">
- *   <colgroup>
- *     <col width="120">
- *     <col width="120">
- *     <col width="120">
- *     <col width="120">
- *   </colgroup>
- *   <tbody>
- *     <tr>
- *       <td><em>NOT<em></td>
- *       <td>FALSE</td>
- *       <td>TRUE</td>
- *       <td>NOT_LOADED</td>
- *     </tr>
- *     <tr>
- *       <td></td>
- *       <td>TRUE</td>
- *       <td>FALSE</td>
- *       <td>NOT_LOADED</td>
- *     </tr>
- *   </tbody>
- * </table>
- * 
- * <p>
- * The class is not intended to be subclassed by clients.
- * </p>
- * @since 3.0
- */
-public class EvaluationResult {
-	
-	private int fValue;
-	
-	private static final int FALSE_VALUE= 0;
-	private static final int TRUE_VALUE= 1;
-	private static final int NOT_LOADED_VALUE= 2;
-	
-	/** The evaluation result representing the value FALSE */
-	public static final EvaluationResult FALSE= new EvaluationResult(FALSE_VALUE);
-	/** The evaluation result representing the value TRUE */
-	public static final EvaluationResult TRUE= new EvaluationResult(TRUE_VALUE);
-	/** The evaluation result representing the value NOT_LOADED */
-	public static final EvaluationResult NOT_LOADED= new EvaluationResult(NOT_LOADED_VALUE);
-
-	private static final EvaluationResult[][] AND= new EvaluationResult[][] {
-						// FALSE	//TRUE		//NOT_LOADED
-		/* FALSE   */ { FALSE,		FALSE,		FALSE		},
-		/* TRUE    */ { FALSE,		TRUE,		NOT_LOADED	},
-		/* PNL     */ { FALSE,		NOT_LOADED, NOT_LOADED	},
-	};
-
-	private static final EvaluationResult[][] OR= new EvaluationResult[][] {
-						// FALSE	//TRUE	//NOT_LOADED
-		/* FALSE   */ { FALSE,		TRUE,	NOT_LOADED	},
-		/* TRUE    */ { TRUE,		TRUE,	TRUE		},
-		/* PNL     */ { NOT_LOADED,	TRUE, 	NOT_LOADED	},
-	};
-
-	private static final EvaluationResult[] NOT= new EvaluationResult[] {
-		//FALSE		//TRUE	//NOT_LOADED
-		TRUE,		FALSE,	NOT_LOADED
-	};
-
-	/*
-	 * No instances outside of <code>EvaluationResult</code>
-	 */
-	private EvaluationResult(int value) {
-		fValue= value;
-	}
-	
-	/**
-	 * Returns an <code>EvaluationResult</code> whose value is <code>this &amp;&amp; other)</code>.
-	 * 
-	 * @param other the right hand side of the and operation.
-	 * 
-	 * @return <code>this &amp;&amp; other</code> as defined by the evaluation result
-	 */
-	public EvaluationResult and(EvaluationResult other) {
-		return AND[fValue][other.fValue];
-	}
-	
-	/**
-	 * Returns an <code>EvaluationResult</code> whose value is <code>this || other)</code>.
-	 * 
-	 * @param other the right hand side of the or operation.
-	 * 
-	 * @return <code>this || other</code> as defined by the evaluation result
-	 */
-	public EvaluationResult or(EvaluationResult other) {
-		return OR[fValue][other.fValue];
-	}
-	
-	/**
-	 * Returns the inverted value of this evaluation result
-	 * 
-	 * @return the inverted value of this evaluation result
-	 */
-	public EvaluationResult not() {
-		return NOT[fValue];
-	}
-	
-	/**
-	 * Returns an evaluation result instance representing the
-	 * given boolean value. If the given boolean value is
-	 * <code>true</code> then <code>ExpressionResult.TRUE</code>
-	 * is returned. If the value is <code>false</code> then <code>
-	 * ExpressionResult.FALSE</code> is returned.
-	 * 
-	 * @param b a boolean value
-	 * 
-	 * @return the expression result representing the boolean
-	 *  value
-	 */
-	public static EvaluationResult valueOf(boolean b) {
-		return b ? TRUE : FALSE;
-	}
-	
-	/**
-	 * Returns a evaluation result instance representing the
-	 * given <code>Boolean</code> value. If the given <code>Boolean
-	 * </code> value is <code>true</code> then <code>ExpressionResult.TRUE</code>
-	 * is returned. If the value is <code>false</code> then <code>
-	 * ExpressionResult.FALSE</code> is returned.
-	 * 
-	 * @param b a <code>Boolean</code> value
-	 * 
-	 * @return the expression result representing the <code>Boolean</code>
-	 *  value
-	 */
-	public static EvaluationResult valueOf(Boolean b) {
-		return b.booleanValue() ? TRUE : FALSE;
-	}
-	
-	/**
-	 * For debugging purpose only
-	 * 
-	 * @return a string representing this object. The result is not
-	 *  human readable
-	 */
-	public String toString() {
-		switch (fValue) {
-			case 0:
-				return "false"; //$NON-NLS-1$
-			case 1:
-				return "true"; //$NON-NLS-1$
-			case 2:
-				return "not_loaded"; //$NON-NLS-1$
-		}
-		Assert.isTrue(false);
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/Expression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/Expression.java
deleted file mode 100644
index 47557e5..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/Expression.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.expressions;
-
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * Abstract base class for all expressions provided by the common
- * expression language.
- * <p>
- * An expression is evaluated by calling {@link #evaluate(IEvaluationContext)}.
- * </p>
- * <p>
- * This class may be subclassed to provide specific expressions.
- * </p>
- * 
- * @since 3.0
- */
-public abstract class Expression {
-	
-	/**
-	 * Name of the value attribute of an expression (value is 
-	 * <code>value</code>).
-	 */ 
-	protected static final String ATT_VALUE= "value"; //$NON-NLS-1$
-	
-	/**
-	 * The expression corresponding to {@link EvaluationResult#TRUE}.
-	 */
-	public static final Expression TRUE= new Expression() {
-		public EvaluationResult evaluate(IEvaluationContext context) {
-			return EvaluationResult.TRUE;
-		}	
-		public void collectExpressionInfo(ExpressionInfo info) {
-		}
-	};
-	
-	/**
-	 * The expression corresponding to {@link EvaluationResult#FALSE}.
-	 */
-	public static final Expression FALSE= new Expression() {
-		public EvaluationResult evaluate(IEvaluationContext context) {
-			return EvaluationResult.FALSE;
-		}
-		public void collectExpressionInfo(ExpressionInfo info) {
-		}
-	};
-	
-	/**
-	 * Evaluates this expression. 
-	 * 
-	 * @param context an evaluation context providing information like variable,
-	 *  name spaces, etc. necessary to evaluate this expression
-	 * 
-	 * @return the result of the expression evaluation
-	 * 
-	 * @throws CoreException if the evaluation failed. The concrete reason is 
-	 *  defined by the subclass implementing this method
-	 */
-	public abstract EvaluationResult evaluate(IEvaluationContext context) throws CoreException;
-	
-	/**
-	 * Computes the expression information for the given expression tree.
-	 * <p>
-	 * This is a convenience method for collecting the expression information
-	 * using {@link Expression#collectExpressionInfo(ExpressionInfo)}.
-	 * </p>
-	 * 
-	 * @return the expression information 
-	 * @since 3.2
-	 */
-	public final ExpressionInfo computeExpressionInfo() {
-		ExpressionInfo result= new ExpressionInfo();
-		collectExpressionInfo(result);
-		return result;
-	}
-	
-	/**
-	 * Collects information about this expression tree. This default
-	 * implementation add the expression's type to the set of misbehaving
-	 * expression types.
-	 * 
-	 * @param info the expression information object used
-	 *  to collect the information
-	 * @since 3.2
-	 */
-	public void collectExpressionInfo(ExpressionInfo info) {
-		info.addMisBehavingExpressionType(getClass());
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/ExpressionConverter.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/ExpressionConverter.java
deleted file mode 100644
index f8500e0..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/ExpressionConverter.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.expressions;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-
-import org.eclipse.core.internal.expressions.Assert;
-import org.eclipse.core.internal.expressions.CompositeExpression;
-import org.eclipse.core.internal.expressions.ExpressionMessages;
-import org.eclipse.core.internal.expressions.ExpressionPlugin;
-import org.eclipse.core.internal.expressions.Messages;
-
-/**
- * An expression converter converts an XML expression represented by an 
- * {@link IConfigurationElement} tree into a corresponding expression tree.
- * 
- * <p>
- * An expression converter manages a list of {@link ElementHandler}s. Element
- * handlers are responsible to do the actual conversion. The element handlers
- * build a chain of responsibility.
- * </p>
- * 
- * @since 3.0 
- */
-public final class ExpressionConverter {
-	
-	private ElementHandler[] fHandlers;
-	private static final ExpressionConverter INSTANCE= new ExpressionConverter( 
-		new ElementHandler[] { ElementHandler.getDefault() } ); 
-	
-	/** 
-	 * Returns the default expression converter. The default expression converter
-	 * can cope with all expression elements defined by the common expression
-	 * language.
-	 * 
-	 * @return the default expression converter
-	 */
-	public static ExpressionConverter getDefault() {
-		return INSTANCE;
-	}
-	
-	/**
-	 * Creates a new expression converter with the given list of element
-	 * handlers. The element handlers build a chain of responsibility
-	 * meaning that the first handler in the list is first used to
-	 * convert the configuration element. If this handler isn't able
-	 * to convert the configuration element the next handler in the
-	 * array is used.
-	 * 
-	 * @param handlers the array  of element handlers
- 	 */
-	public ExpressionConverter(ElementHandler[] handlers) {
-		Assert.isNotNull(handlers);
-		fHandlers= handlers;
-	}
-	
-	/**
-	 * Converts the tree of configuration elements represented by the given
-	 * root element and returns a corresponding expression tree.
-	 * 
-	 * @param root the configuration element to be converted
-	 * 
-	 * @return the corresponding expression tree or <code>null</code>
-	 *  if the configuration element cannot be converted
-	 * 
-	 * @throws CoreException if the configuration element can't be
-	 *  converted. Reasons include: (a) no handler is available to
-	 *  cope with a certain configuration element or (b) the XML
-	 *  expression tree is malformed.
-	 */
-	public Expression perform(IConfigurationElement root) throws CoreException {
-		for (int i= 0; i < fHandlers.length; i++) {
-			ElementHandler handler= fHandlers[i];
-			Expression result= handler.create(this, root);
-			if (result != null)
-				return result;
-		}
-		return null;
-	}
-	
-	/* package */ void processChildren(IConfigurationElement element, CompositeExpression result) throws CoreException {
-		IConfigurationElement[] children= element.getChildren();
-		if (children != null) {
-			for (int i= 0; i < children.length; i++) {
-				Expression child= perform(children[i]);
-				if (child == null)
-					throw new CoreException(new Status(IStatus.ERROR, ExpressionPlugin.getPluginId(),
-						IStatus.ERROR, 
-						Messages.format(
-							ExpressionMessages.Expression_unknown_element,  
-							children[i].getName()),
-						null));
-				result.add(child);
-			}
-		}		
-	}
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/ExpressionInfo.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/ExpressionInfo.java
deleted file mode 100644
index 0130301..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/ExpressionInfo.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.expressions;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * A status object describing information about an expression tree. 
- * This information can for example be used to decide whether a
- * expression tree as to be reevaluated if the value of some
- * variables changes.
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.2
- */
-public class ExpressionInfo {
-
-	private boolean fHasDefaultVariableAccess;
-	private boolean fHasSystemPropertyAccess;
-	
-	// Although we are using this as sets we use lists since
-	// they are faster for smaller numbers of elements
-	private List fAccessedVariableNames;
-	private List fMisbehavingExpressionTypes;
-	
-	/**
-	 * Returns <code>true</code> if the default variable is accessed
-	 * by the expression tree.
-	 * 
-	 * @return whether the default variable is accessed or not
-	 */
-	public boolean hasDefaultVariableAccess() {
-		return fHasDefaultVariableAccess;
-	}
-	
-	/**
-	 * Marks the default variable as accessed.
-	 */
-	public void markDefaultVariableAccessed() {
-		fHasDefaultVariableAccess= true;
-	}
-
-	/**
-	 * Returns <code>true</code> if the system property is accessed
-	 * by the expression tree.
-	 * 
-	 * @return whether the system property is accessed or not
-	 */
-	public boolean hasSystemPropertyAccess() {
-		return fHasSystemPropertyAccess;
-	}
-	
-	/**
-	 * Marks the system property as accessed.
-	 */
-	public void markSystemPropertyAccessed() {
-		fHasSystemPropertyAccess= true;
-	}
-
-	/**
-	 * Returns the set off accessed variables.
-	 * 
-	 * @return the set off accessed variables
-	 */
-	public String[] getAccessedVariableNames() {
-		if (fAccessedVariableNames == null)
-			return new String[0];
-		return (String[])fAccessedVariableNames.toArray(new String[fAccessedVariableNames.size()]);
-	}
-	
-	/**
-	 * Marks the given variable as accessed.
-	 * 
-	 * @param name the accessed variable
-	 */
-	public void addVariableNameAccess(String name) {
-		if (fAccessedVariableNames == null) {
-			fAccessedVariableNames= new ArrayList(5);
-			fAccessedVariableNames.add(name);
-		} else {
-			if (!fAccessedVariableNames.contains(name))
-				fAccessedVariableNames.add(name);
-		}
-	}
-
-	/**
-	 * Returns the set of expression types which don't implement the
-	 * new (@link Expression#computeReevaluationInfo(IEvaluationContext)}
-	 * method. If one expression didn't implement the method the expression
-	 * tree no optimizations can be done. Returns <code>null</code> if 
-	 * all expressions implement the method.
-	 * 
-	 * @return the set of expression types which don't implement the
-	 *  <code>computeReevaluationInfo</code> method.
-	 */
-	public Class[] getMisbehavingExpressionTypes() {
-		if (fMisbehavingExpressionTypes == null)
-			return null;
-		return (Class[])fMisbehavingExpressionTypes.toArray(new Class[fMisbehavingExpressionTypes.size()]);
-	}
-	
-	/**
-	 * Adds the given class to the list of misbehaving classes.
-	 * 
-	 * @param clazz the class to add.
-	 */
-	public void addMisBehavingExpressionType(Class clazz) {
-		if (fMisbehavingExpressionTypes == null) {
-			fMisbehavingExpressionTypes= new ArrayList();
-			fMisbehavingExpressionTypes.add(clazz);
-		} else {
-			if (!fMisbehavingExpressionTypes.contains(clazz))
-				fMisbehavingExpressionTypes.add(clazz);
-		}
-	}
-	
-	/**
-	 * Merges this reevaluation information with the given info.
-	 * 
-	 * @param other the information to merge with
-	 */
-	public void merge(ExpressionInfo other) {
-		mergeDefaultVariableAccess(other);
-		mergeSystemPropertyAccess(other);
-		
-		mergeAccessedVariableNames(other);
-		mergeMisbehavingExpressionTypes(other);
-	}
-
-	/**
-	 * Merges this reevaluation information with the given info
-	 * ignoring the default variable access.
-	 * 
-	 * @param other the information to merge with
-	 */
-	public void mergeExceptDefaultVariable(ExpressionInfo other) {
-		mergeSystemPropertyAccess(other);
-		
-		mergeAccessedVariableNames(other);
-		mergeMisbehavingExpressionTypes(other);
-	}
-	
-	/**
-	 * Merges only the default variable access.
-	 * 
-	 * @param other the information to merge with
-	 */
-	private void mergeDefaultVariableAccess(ExpressionInfo other) {
-		fHasDefaultVariableAccess= fHasDefaultVariableAccess || other.fHasDefaultVariableAccess;
-	}
-	
-	/**
-	 * Merges only the system property access.
-	 * 
-	 * @param other the information to merge with
-	 */
-	private void mergeSystemPropertyAccess(ExpressionInfo other) {
-		fHasSystemPropertyAccess= fHasSystemPropertyAccess || other.fHasSystemPropertyAccess;
-	}
-
-	/**
-	 * Merges only the accessed variable names.
-	 * 
-	 * @param other the information to merge with
-	 */
-	private void mergeAccessedVariableNames(ExpressionInfo other) {
-		if (fAccessedVariableNames == null) {
-			fAccessedVariableNames= other.fAccessedVariableNames;
-		} else {
-			if (other.fAccessedVariableNames != null) {
-				for (Iterator iter= other.fAccessedVariableNames.iterator(); iter.hasNext();) {
-					Object variableName= iter.next();
-					if (!fAccessedVariableNames.contains(variableName))
-						fAccessedVariableNames.add(variableName);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Merges only the misbehaving expression types.
-	 * 
-	 * @param other the information to merge with
-	 */
-	private void mergeMisbehavingExpressionTypes(ExpressionInfo other) {
-		if (fMisbehavingExpressionTypes == null) {
-			fMisbehavingExpressionTypes= other.fMisbehavingExpressionTypes;
-		} else  {
-			if (other.fMisbehavingExpressionTypes != null) {
-				for (Iterator iter= other.fMisbehavingExpressionTypes.iterator(); iter.hasNext();) {
-					Object clazz= iter.next();
-					if (!fMisbehavingExpressionTypes.contains(clazz))
-						fMisbehavingExpressionTypes.add(clazz);
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/ExpressionTagNames.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/ExpressionTagNames.java
deleted file mode 100644
index 0fa229e..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/ExpressionTagNames.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.expressions;
-
-/**
- * Class defining the tag names of the XML elements of the common
- * expression language.
- * 
- * @since 3.0
- */
-public final class ExpressionTagNames {
-
-	/** The tag name of the enablement expression (value: <code>enablement</code>) */
-	public static final String ENABLEMENT= "enablement"; //$NON-NLS-1$
-	
-	/** The tag name of the and expression (value: <code>and</code>) */
-	public static final String AND= "and"; //$NON-NLS-1$
-	
-	/** The tag name of the or expression (value: <code>or</code>) */
-	public static final String OR= "or"; //$NON-NLS-1$
-	
-	/** The tag name of the not expression (value: <code>not</code>) */
-	public static final String NOT= "not"; //$NON-NLS-1$
-	
-	/** The tag name of the instanceof expression (value: <code>instanceof</code>) */
-	public static final String INSTANCEOF= "instanceof"; //$NON-NLS-1$
-	
-	/** The tag name of the test expression (value: <code>test</code>) */
-	public static final String TEST= "test"; //$NON-NLS-1$
-	
-	/** The tag name of the with expression (value: <code>with</code>) */
-	public static final String WITH= "with"; //$NON-NLS-1$
-	
-	/** The tag name of the adapt expression (value: <code>adapt</code>) */
-	public static final String ADAPT= "adapt"; //$NON-NLS-1$
-	
-	/** The tag name of the count expression (value: <code>count</code>) */
-	public static final String COUNT= "count"; //$NON-NLS-1$
-	
-	/** The tag name of the adapt expression (value: <code>iterate</code>) */
-	public static final String ITERATE= "iterate"; //$NON-NLS-1$
-	
-	/** The tag name of the resolve expression (value: <code>resolve</code>) */
-	public static final String RESOLVE= "resolve"; //$NON-NLS-1$
-
-	/** The tag name of the systemTest expression (value: <code>systemTest</code>) */
-	public static final String SYSTEM_TEST= "systemTest"; //$NON-NLS-1$
-	
-	/** The tag name of the equals expression (value: <code>equals</code>) */
-	public static final String EQUALS= "equals"; //$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/IEvaluationContext.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/IEvaluationContext.java
deleted file mode 100644
index 6f62a40..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/IEvaluationContext.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.expressions;
-
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * An evaluation context is used to manage a set of objects needed during
- * XML expression evaluation. A context has a parent context, can manage
- * a set of named variables and has a default variable. The default variable 
- * is used during XML expression evaluation if no explicit variable is 
- * referenced.
- * <p>
- * This interface is not intended to be implemented by clients. Clients
- * are allowed to instantiate <code>EvaluationContext</code>. 
- * </p>
- * 
- * @since 3.0
- */
-public interface IEvaluationContext {
-
-	/**
-	 * Returns the parent context or <code>null</code> if 
-	 * this is the root of the evaluation context hierarchy.
-	 * 
-	 * @return the parent evaluation context or <code>null</code>
-	 */
-	public IEvaluationContext getParent();
-	
-	/**
-	 * Returns the root evaluation context.
-	 * 
-	 * @return the root evaluation context
-	 */
-	public IEvaluationContext getRoot();
-	
-	/**
-	 * Returns the default variable.
-	 * 
-	 * @return the default variable or <code>null</code> if
-	 *  no default variable is managed.
-	 */
-	public Object getDefaultVariable();
-	
-	/**
-	 * Adds a new named variable to this context. If a variable
-	 * with the name already exists the new one overrides the
-	 * existing one.
-	 * 
-	 * @param name the variable's name
-	 * @param value the variable's value
-	 */
-	public void addVariable(String name, Object value);
-	
-	/**
-	 * Removes the variable managed under the given name
-	 * from this evaluation context.
-	 * 
-	 * @param name the variable's name
-	 * @return the currently stored value or <code>null</code> if
-	 *  the variable doesn't exist
-	 */
-	public Object removeVariable(String name);
-	
-	/**
-	 * Returns the variable managed under the given name.
-	 * 
-	 * @param name the variable's name
-	 * @return the variable's value or <code>null</code> if the content
-	 *  doesn't manage a variable with the given name 
-	 */
-	public Object getVariable(String name);
-	
-	/**
-	 * Resolves a variable for the given name and arguments. This
-	 * method can be used to dynamically resolve variable such as
-	 * plug-in descriptors, resources, etc. The method is used
-	 * by the <code>resolve</code> expression.
-	 * 
-	 * @param name the variable to resolve
-	 * @param args an object array of arguments used to resolve the
-	 *  variable
-	 * @return the variable's value or <code>null</code> if no variable
-	 *  can be resolved for the given name and arguments
-	 * @exception CoreException if an errors occurs while resolving
-	 *  the variable
-	 */
-	public Object resolveVariable(String name, Object[] args) throws CoreException;
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/IPropertyTester.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/IPropertyTester.java
deleted file mode 100644
index d360a56..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/IPropertyTester.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.expressions;
-
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * A property tester can be used to add additional properties to test to an 
- * existing type.
- * <p>
- * This interface is not intended to be implemented by clients. Clients
- * should subclass type <code>PropertyTester</code>.
- * </p>
- * 
- * @since 3.0
- */
-public interface IPropertyTester {
-
-	/**
-	 * Returns whether the property tester can handle the given
-	 * property or not.
-	 * 
-	 * @param namespace the name space to be considered
-	 * @param property the property to test
-	 * @return <code>true</code> if the tester provides an implementation
-	 *  for the given property; otherwise <code>false</code> is returned
-	 */
-	public boolean handles(String namespace, String property);
-	
-	/**
-	 * Returns whether the implementation class for this property tester is
-	 * loaded or not.
-	 * 
-	 * @return <code>true</code>if the implementation class is loaded; 
-	 *  <code>false</code> otherwise
-	 */
-	public boolean isInstantiated();
-	
-	/**
-	 * Returns <code>true</code> if the implementation class of this property
-	 * tester can be loaded. This is the case if the plug-in providing
-	 * the implementation class is active. Returns <code>false</code> otherwise.
-	 * 
-	 * @return whether the implementation class can be loaded or not
-	 */
-	public boolean isDeclaringPluginActive();
-	
-	/**
-	 * Loads the implementation class for this property tester and returns an
-	 * instance of this class.
-	 * 
-	 * @return an instance of the implementation class for this property tester
-	 * 
-	 * @throws CoreException if the implementation class cannot be loaded
-	 */
-	public IPropertyTester instantiate() throws CoreException;
-	
-	/**
-	 * Executes the property test determined by the parameter <code>property</code>. 
-	 * 
-	 * @param receiver the receiver of the property test
-	 * @param property the property to test
-	 * @param args additional arguments to evaluate the property. If no arguments
-	 *  are specified in the <code>test</code> expression an array of length 0
-	 *  is passed
-	 * @param expectedValue the expected value of the property. The value is either 
-	 *  of type <code>java.lang.String</code> or a boxed base type. If no value was
-	 *  specified in the <code>test</code> expressions then <code>null</code> is passed
-	 * 
-	 * @return returns <code>true<code> if the property is equal to the expected value; 
-	 *  otherwise <code>false</code> is returned
-	 */
-	public boolean test(Object receiver, String property, Object[] args, Object expectedValue);
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/IVariableResolver.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/IVariableResolver.java
deleted file mode 100644
index 662627d..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/IVariableResolver.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.expressions;
-
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * A variable resolver can be used to add additional variable resolving
- * strategies to an {@link EvaluationContext}.
- * 
- * @see org.eclipse.core.expressions.EvaluationContext#resolveVariable(String, Object[])
- * 
- * @since 3.0
- */
-public interface IVariableResolver {
-
-	/**
-	 * Resolves a variable for the given name and arguments. The
-	 * handler is allowed to return <code>null</code> to indicate
-	 * that it is not able to resolve the requested variable.
-	 * 
-	 * @param name the variable to resolve
-	 * @param args an object array of arguments used to resolve the
-	 *  variable
-	 * @return the variable's value or <code>null</code> if no variable
-	 *  could be resolved
-	 * @exception CoreException if an errors occurs while resolving
-	 *  the variable
-	 */
-	public Object resolve(String name, Object[] args) throws CoreException;
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/PropertyTester.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/PropertyTester.java
deleted file mode 100644
index d9fea40..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/PropertyTester.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.expressions;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.Platform;
-
-import org.eclipse.core.internal.expressions.PropertyTesterDescriptor;
-
-import org.osgi.framework.Bundle;
-
-/**
- * Abstract superclass of all property testers. Implementation classes of
- * the extension point <code>org.eclipse.core.expresssions.propertyTesters
- * </code> must extend <code>PropertyTester</code>.
- * <p>
- * A property tester implements the property tests enumerated in the property
- * tester extension point. For the following property test extension
- * <pre>
- *   &lt;propertyTester
- *     	 namespace="org.eclipse.jdt.core"
- *       id="org.eclipse.jdt.core.IPackageFragmentTester"
- *       properties="isDefaultPackage"
- *       type="org.eclipse.jdt.core.IPackageFragment"
- *       class="org.eclipse.demo.MyPackageFragmentTester"&gt;
- *     &lt;/propertyTester&gt;
- * </pre>
- * the corresponding implementation class looks like:
- * <pre>
- *   public class MyPackageFragmentTester {
- *       public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
- *           IPackageFragment fragement= (IPackageFragment)receiver;
- *	         if ("isDefaultPackage".equals(property)) { 
- *               return expectedValue == null
- *               	? fragement.isDefaultPackage()
- *               	: fragement.isDefaultPackage() == ((Boolean)expectedValue).booleanValue();
- *           }
- *           Assert.isTrue(false);
- *           return false;
- *       }
- *   }
- * </pre>
- * The property can then be used in a test expression as follows:
- * <pre>
- *   &lt;instanceof value="org.eclipse.core.IPackageFragment"/&gt;
- *   &lt;test property="org.eclipse.jdt.core.isDefaultPackage"/&gt;
- * </pre>
- * </p>
- * @since 3.0 
- */
-public abstract class PropertyTester implements IPropertyTester {
-	
-	private IConfigurationElement fConfigElement;
-	private String fNamespace;
-	private String fProperties;
-	
-	/**
-	 * Initialize the property tester with the given name space and property.
-	 * <p>
-	 * Note: this method is for internal use only. Clients must not call 
-	 * this method.
-	 * </p>
-	 * @param descriptor the descriptor object for this tester
-	 */
-	public final void internalInitialize(PropertyTesterDescriptor descriptor) { 
-		fProperties= descriptor.getProperties();
-		fNamespace= descriptor.getNamespace();
-		fConfigElement= descriptor.getConfigurationElement();
-	}
-	
-	/**
-	 * Note: this method is for internal use only. Clients must not call 
-	 * this method.
-	 * 
-	 * @return the property tester descriptor
-	 */
-	public final PropertyTesterDescriptor internalCreateDescriptor() {
-		return new PropertyTesterDescriptor(fConfigElement, fNamespace, fProperties);
-	}
-
-	/**
-	 * {@inheritDoc}
-	 */
-	public final boolean handles(String namespace, String property) {
-		return fNamespace.equals(namespace) && fProperties.indexOf("," + property + ",") != -1;  //$NON-NLS-1$//$NON-NLS-2$
-	}
-	
-	/**
-	 * {@inheritDoc}
-	 */
-	public final boolean isInstantiated() {
-		return true;
-	}
-	
-	/**
-	 * {@inheritDoc}
-	 */
-	public boolean isDeclaringPluginActive() {
-		Bundle fBundle= Platform.getBundle(fConfigElement.getNamespace());
-		return fBundle.getState() == Bundle.ACTIVE;		
-	}
-	
-	/**
-	 * {@inheritDoc}
-	 */
-	public final IPropertyTester instantiate() {
-		return this;
-	}
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/package.html b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/package.html
deleted file mode 100644
index b1a0ba4..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/package.html
+++ /dev/null
@@ -1,270 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<title>Package-level Javadoc</title>
-<link rel="stylesheet" href="http://dev.eclipse.org/default_style.css"
-	type="text/css">
-</head>
-<body style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0)">
-Application programming interfaces for the expression language. 
-<h2>Package Specification</h2>
-The package provides API and implementation classes to define a unified
-XML expression language to be used in extension points. The expression
-language isn't bound to one specific extension point. It can be used in
-all extension points which have to define some sort of enablement
-expression.
-<h3>XML expression language</h3>
-The XML expression language consists of the following predefined
-expression tags. The set is open and can be extended by an extension
-point provider to customize the expression language to its need.
-<p><i><u>Boolean operators</u></i></p>
-<p>The expression language provides standard expressions for the Boolean
-operators and, or and not.</p>
-<p><i><u>Instanceof expression</u></i></p>
-<p>The most frequently used check in current extension points is one to
-test if an object conforms to a certain type. The common XML expression
-language provides a special XML element to represent instance of checks.
-A typical usage looks as follows:</p>
-<blockquote><pre>&lt;instanceof value="org.eclipse.jdt.core.IJavaElement"/&gt;</pre>
-</blockquote>
-<p>The above expression tests, if the object under inspection (in most
-cases the element selected in the user interface) is of instance
-"org.eclipse.jdt.core.IJavaElement".</p>
-<p><a name="test_expression0"><i><u>Test expression</u></i></a></p>
-<p>Besides instance of checks the new expression language defines an
-extensible &lt;test&gt; element to support property testing. The
-&lt;test&gt; element is comparable to the &lt;filter&gt; element used in
-Platform/UI. The test element is used as follows:</p>
-<blockquote><pre>&lt;and&gt;
-  &lt;instanceof value="org.eclipse.core.resources.IFile"/&gt;
-  &lt;test property="org.demo.matchesPattern" value="*.html"/&gt;
-&lt;/and&gt;</pre></blockquote>
-<p>The above expression evaluates to true if the object under inspection
-is of type "org.eclipse.core.resources.IFile" and its file name matches
-the pattern "*.html". But who actually provides the code to do the name
-pattern test? Predefining a set of properties to test is too limiting.
-The set of tests must be open. Property testers are added to the system
-using a special extension point <span style="font-family: monospace">propertyTesters</span>.
-The above matchesPattern property is added to the system in the
-following way:</p>
-<pre style="margin-left: 40px">&lt;extension point="org.eclipse.core.expressions.propertyTesters"&gt;
-    &lt;propertyTester
-        id="org.eclipse.jdt.ui.IResourceTypeExtender"
-        type="org.eclipse.core.resources.IResource"
-        namespace="org.demo"
-        properties="matchesPattern, ...."
-        class="org.eclipse....ResourcePropertyTester"&gt;
-     &lt;/propertyTester&gt;
-&lt;/extension&gt;</pre>
-<p>The major characteristics of the extensible test mechanism are:</p>
-<ul>
-	<li>types are enriched with new properties using a property tester,
-	meaning that the code of the actual property test is provided by a
-	different class.</li>
-	<li>a property tester implements a set of properties.</li>
-	<li>property testers and their properties are defined in XML as
-	extension points. This is required to check if an extender provides a
-	property without having to activate it (e.g. load the plug-in).</li>
-	<li>properties belong to a name space. This ensures that two sibling
-	plug-ins can define the same property without causing any ambiguity. If
-	a property is defined more than once for a name space then one of the
-	testers is randomly chosen to test the property. Inheritance only
-	works within the same name space. If, for example, there is a property
-	<span style="font-family: monospace">isPublic</span> defined in the
-	namespace <code>org.myNamespace</code> for type <code>org.eclipse.core.IMethod</code>
-	then this property will not override the property <span
-		style="font-family: monospace">isPublic</span> in the namespace <code>org.yourNamespace</code>
-	for type <code>org.eclipse.core.IMember</code>.&nbsp;</li>
-	<li>testing for an unknown property results in a core exception. This
-	is a programming error.</li>
-</ul>
-<p>The attributes of the propertyTester element have the following
-meaning:</p>
-<ul>
-	<li>id: a unique id</li>
-	<li>type: the type which gets "enriched" with new methods</li>
-	<li>namespace: the name space the properties belong to</li>
-	<li>properties: the comma separated list of properties provided by the
-	tester.</li>
-	<li>class: the implementing class</li>
-</ul>
-<p>The concrete implementation for the above property tester looks like
-this:</p>
-<blockquote><pre><font size="-1">public class ResourcePropertyTester extends PropertyTester {
-  private static final String PROPERTY_MATCHES_PATTERN= "matchesPattern"; //$NON-NLS-1$
-
-
-
-  public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
-    IResource resource= (IResource)receiver;
-    if (PROPERTY_MATCHES_PATTERN.equals(method)) {
-      String fileName= resource.getName();
-      StringMatcher matcher= new StringMatcher((String)expectedValue, false, false);
-      return expectedValue == null
-          ? matcher.match(fileName)
-          : matcher.match(filename) == ((Boolean)expectedValue).booleanValue();
-    } else if (...) {
-    }
-    Assert.isTrue(false);
-    return false;
-  }
-</font>}</pre></blockquote>
-<p>The string value provided by the value attribute is converted into a
-Java object using the following rules:</p>
-<ul>
-	<li>the string &quot;true&quot; is converted into Boolean.TRUE</li>
-	<li>the string &quot;false&quot; is converted into Boolean.FALSE</li>
-	<li>if the string contains a dot then the interpreter tries to convert
-	the value into a Float object. If this fails the string is treated as a
-	java.lang.String</li>
-	<li>if the string only consists of numbers then the interpreter
-	converts the value in an Integer object.</li>
-	<li>in all other cases the string is treated as a java.lang.String</li>
-	<li>the conversion of the string into a Boolean, Float, or Integer can
-	be suppressed by surrounding the string with single quotes. For
-	example, the attribute value=&quot;'true'&quot; is converted into the
-	string &quot;true&quot;</li>
-</ul>
-<p>Sometimes a property test needs additional arguments to determine the
-exact property to test. If this is the case the arguments can be passed
-using the additional args attribute. An example which validates a name
-using the method IWorkspace.validateName looks as follows:</p>
-<blockquote><pre>&lt;test property="org.demo.validateName" args=&quot;/org.eclipse.demo/A.java, FILE&quot;/&gt;</pre></blockquote>
-<p><i><u>With expression</u></i></p>
-<p>Test expressions don't allow to specify the object they inspect. They
-work on a default object, which for most extension points is the object
-selected in the user interface. However, the enablement logic of some
-extension points need to test other objects as well. For example a Java
-refactoring participant tests if the list of affected projects contains
-a project with the Java nature:</p>
-<blockquote><pre>&lt;with variable="affectedProjects"&gt;
-    &lt;iterate operator=&quot;or&quot;&gt;
-        &lt;test property=&quot;org.demo.projectNature&quot; value=&quot;org.eclipse.jdt.core.javanature&quot;/&gt;
-    &lt;/iterate&gt;
-&lt;/with&gt;</pre></blockquote>
-<p>The plug-in that evaluates the extension point is responsible for
-providing the set of available variables. For example, the code that
-evaluates refactoring participants provides the follow variables:</p>
-<ul>
-	<li><i>selection:</i> its value is a collection containing the objects
-	to be refactored</li>
-	<li><i>affectedProjects</i>: its value is a collection containing the
-	projects affected by the refactoring</li>
-	<li><i>defaultVariable</i>: will be used if no with expression element
-	is active. Is an alias for the variable selection.</li>
-</ul>
-<p>If the variable doesn't exist, the with expression will throw a core
-exception.</p><p><u><i>Resolve expression</i></u></p>
-<p>The resolve expression is comparable to the with expression, but it allows resolving the variable dynamically and to pass additional arguments needed to resolve the argument. For example to resolve the plug-in descriptor for a specific plug-in the following XML element can be used:</p>
-<blockquote><pre>&lt;resolve variable="pluginDescriptor" args=&quot;org.eclipse.core.runtime&quot;&gt;
-    &lt;test property="org.demo.isActive"/&gt;
-&lt;/adapt&gt;</pre></blockquote>
-<p>The actual resolving is delegated to the evaluation context used to evaluate the expressions. See below on how to evaluate an expression and how to create an evaluation context.</p>
-<p><u><i>Adapt expression</i></u></p>
-<p>The adapt expression can be used to adapt the object to be inspected
-to an object of a different type using the adapter mechanism provided by
-the platform. The example below adapts the object to be inspected to an
-IType and then checks if the type is public:</p>
-<blockquote><pre>&lt;adapt type="org.eclipse.jdt.core.IType"&gt;
-    &lt;test property="org.demo.isPrivate"/&gt;
-&lt;/adapt&gt;</pre></blockquote>
-<p>Like the with expression the adapt expression changes the object to
-inspect for all its children. The new object is the one returned from
-IAdapter.getAdapter(). If the adaption fails, the expression evaluates
-to false.</p>
-<p>The adapt expression is implemented based on the IAdapterManager API
-<code>hasAdapter(Object, String)</code> and <code>getAdapter(Object, String)</code>.
-This ensures that the right class loader is taken to convert the type name into a
-corresponding Class object.
-However, using this API requires that the adapter factory providing the actual adapter
-is registered in XML using the extension point &quot;org.eclipse.core.runtime.adapters&quot;.
-Assuming that there is an adapter that converts resources with the extension .java into IType objects,
-the adapter must be declared in XML to make the above adapt expression work correctly.
-The corresponding adapter definition looks like this:</p>
-<blockquote><pre>&lt;extension point=&quot;org.eclipse.core.runtime.adapters&quot;&gt;
-  &lt;factory 
-    class=&quot;org.demo.MyAdapterFactory&quot; 
-    adaptableType=&quot;org.eclipse.core.resources.IFile&quot;&gt;
-    &lt;adapter type=&quot;org.eclipse.jdt.core.IType&quot;/&gt;
-  &lt;/factory&gt;
-&lt;/extension&gt;</pre></blockquote>
-<p><u><i>SytemTest expression</i></u></p>
-<p>There is a special XML element to test system properties.</p>
-<blockquote>
-<p><code>&lt;systemTest property="os.name" value="Windows XP"/&gt;<br>
-&lt;systemTest property="os.version" value="5.1"/&gt;</code></p>
-</blockquote>
-<p><u><i>Dealing with collection of elements</i></u></p>
-<p>Several expressions are evaluated on a collection of objects (for
-example refactoring participants, menu contributions, ...). Up to now, the
-iteration over collections was implicitly coded into the enclosing XML
-element, which isn't part of the expression itself. The new mechanism
-provides explicit expression elements to deal with collections of
-objects. The following element</p>
-<blockquote><pre>&lt;count value="*"/&gt;</pre></blockquote>
-<p>is used to check the number of objects in a collection, and the syntax
-of the attribute value is equal to the enablesFor attribute used for
-object contributions. To iterate over a collection, an element</p>
-<blockquote><pre>&lt;iterate operator="..."&gt;</pre></blockquote>
-<p>is provided. The operator attribute can either be "and" or "or". It
-determines how the evaluation results of all objects in the list are
-combined. The default operator is "and". Using these expression the
-enablement of a typical contribution can be described as follows:</p>
-<blockquote><pre>&lt;with variable="selection"&gt;<br>  &lt;count value="+"/&gt;<br>  &lt;iterate operator="and"/&gt;<br>    &lt;adapt type="org.eclipse.core.resources.IFile"&gt;<br>       &lt;test property="matchesName" value="*.gif"/&gt;<br>       &lt;test property="canDelete"/&gt;<br>    &lt;/adapt&gt;<br>  &lt;/iterate&gt;<br>&lt;/with&gt;</pre>
-</blockquote>
-<p>The expression only evaluates to true if the selection contains one
-or more objects and all objects fulfill the expression defined by the
-adapt element.</p>
-<p><u><i>Enablement expression</i></u></p>
-<p>XML expressions are mostly used to define the availability of an
-extension point contribution. To separate the expression from other
-child elements the common expression language provides an enablement
-element. Its use is as follows:</p>
-<blockquote><pre>&lt;renameParticipant<br>   id="launchConfigUpdater"<br>   class="org.eclipse...LaunchConfigUpdater"&gt;<br>   &lt;enablement&gt;<br>    ...<br>   &lt;/enablement&gt;<br>&lt;/renameParticipant&gt;</pre>
-</blockquote>
-<p>Most of the time child expression will be combined using the and
-operator. To avoid deep nesting XML "and" will be the default for
-combining children. It can therefore be omitted. The same applies to the
-adapt, iterate, and enablement expression defined in the following
-sections.</p>
-<p><u><i>Extension Point Schema</i></u></p>
-
-<p>An extension point schema exists for the property tester extension
-point and for the expression language itself. The schema for the 
-expression language can be included into other schema files using
-the following include element:
-</p>
-<blockquote><pre>
-&lt;include schemaLocation="schema://org.eclipse.core.expressions/schema/expressionLanguage.exsd"/&gt;
-</pre></blockquote>
-<p><a name="converting"><u><i>Converting XML elements into expressions</i></u></a></p>
-<p>XML elements can be converted into corresponding expression objects using the class ExpressionConverter.
-If only expression tags from the common expression language are used, then the standard expression converter can be used.
-The following example converts the configuration element representing an enablement element into an expression:</p>
-<blockquote>
-<p><code>IConfigurationElement enablementElement= ...;<br>
-Expression expression=
-ExpressionConverter.getDefault().perform(enablementElement);</code></p>
-</blockquote>
-<p><i><u>Evaluating an expression</u></i></p>
-<p>Expressions are evaluated by calling <code>Expression.evaluate(...);</code>. The evaluation 
-context passed to the evaluate method has to be set up by the plug-in that reads an extension point. 
-The plug-in is responsible to set up the default variable and all the other variable used in 
-with expressions. The example below creates a special evaluation context and uses this context to 
-evaluate an expression:
-</p><blockquote>
-<pre>
-<code>
-EvaluationContext context= new EvaluationContext(null, defaultVariable) {
-    public Object resolveVariable(String name, Object[] args) throws CoreException {
-        // do special resolving
-    }
-}</code></pre>
-</blockquote>
-<p>The actual evaluation is done by calling:</p>
-<blockquote><pre>
-<code>
-EvaluationResult= expression.evaluate(context);</code></pre></blockquote>
-</body>
-</html>
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/AdaptExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/AdaptExpression.java
deleted file mode 100644
index 609f859..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/AdaptExpression.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdapterManager;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.Platform;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.expressions.ExpressionInfo;
-
-public class AdaptExpression extends CompositeExpression {
-
-	private static final String ATT_TYPE= "type"; //$NON-NLS-1$
-	
-	private String fTypeName;
-	
-	public AdaptExpression(IConfigurationElement configElement) throws CoreException {
-		fTypeName= configElement.getAttribute(ATT_TYPE);
-		Expressions.checkAttribute(ATT_TYPE, fTypeName);
-	}
-	
-	public AdaptExpression(String typeName) {
-		Assert.isNotNull(typeName);
-		fTypeName= typeName;
-	}
-	
-	/* (non-Javadoc)
-	 * @see Expression#evaluate(IVariablePool)
-	 */
-	public EvaluationResult evaluate(IEvaluationContext context) throws CoreException {
-		if (fTypeName == null)
-			return EvaluationResult.FALSE;
-		Object var= context.getDefaultVariable();
-		Object adapted= null;
-		if (Expressions.isInstanceOf(var, fTypeName)) {
-			adapted= var;
-		} else {
-			IAdapterManager manager= Platform.getAdapterManager();
-			if (!manager.hasAdapter(var, fTypeName))
-				return EvaluationResult.FALSE;
-		
-			adapted= manager.getAdapter(var, fTypeName);
-		}
-		// the adapted result is null but hasAdapter returned true. This means
-		// that there is an adapter but the adapter isn't loaded yet.
-		if (adapted == null) 
-			return EvaluationResult.NOT_LOADED;
-		return evaluateAnd(new DefaultVariable(context, adapted));
-	}
-	
-	public void collectExpressionInfo(ExpressionInfo info) {
-		// Although the default variable is passed to the children of this
-		// expression as an instance of the adapted type it is OK to only
-		// mark a default variable access.
-		info.markDefaultVariableAccessed();
-		super.collectExpressionInfo(info);
-	}	
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/AndExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/AndExpression.java
deleted file mode 100644
index aa4315a..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/AndExpression.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.eclipse.core.runtime.CoreException;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.IEvaluationContext;
-
-public class AndExpression extends CompositeExpression { 
-
-	public EvaluationResult evaluate(IEvaluationContext context) throws CoreException {
-		return evaluateAnd(context);
-	}	
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/Assert.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/Assert.java
deleted file mode 100644
index 61956a6..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/Assert.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-/**
- * <code>Assert</code> is useful for for embedding runtime sanity checks
- * in code.
- * The predicate methods all test a condition and throw some
- * type of unchecked exception if the condition does not hold.
- * <p>
- * Assertion failure exceptions, like most runtime exceptions, are
- * thrown when something is misbehaving. Assertion failures are invariably
- * unspecified behavior; consequently, clients should never rely on
- * these being thrown (and certainly should not being catching them
- * specifically).
- * </p>
- */
-public final class Assert {
-	
-	/* This class is not intended to be instantiated. */
-	private Assert() {
-		// not allowed
-	}
-	/** Asserts that an argument is legal. If the given boolean is
-	 * not <code>true</code>, an <code>IllegalArgumentException</code>
-	 * is thrown.
-	 *
-	 * @param expression the outcode of the check
-	 * @return <code>true</code> if the check passes (does not return
-	 *    if the check fails)
-	 * @exception IllegalArgumentException if the legality test failed
-	 */
-	public static boolean isLegal(boolean expression) {
-		return isLegal(expression, ""); //$NON-NLS-1$
-	}
-	/** Asserts that an argument is legal. If the given boolean is
-	 * not <code>true</code>, an <code>IllegalArgumentException</code>
-	 * is thrown.
-	 * The given message is included in that exception, to aid debugging.
-	 *
-	 * @param expression the outcode of the check
-	 * @param message the message to include in the exception
-	 * @return <code>true</code> if the check passes (does not return
-	 *    if the check fails)
-	 * @exception IllegalArgumentException if the legality test failed
-	 */
-	public static boolean isLegal(boolean expression, String message) {
-		if (!expression)
-			throw new IllegalArgumentException(message);
-		return expression;
-	}
-	/** Asserts that the given object is not <code>null</code>. If this
-	 * is not the case, some kind of unchecked exception is thrown.
-	 * 
-	 * @param object the value to test
-	 * @exception IllegalArgumentException if the object is <code>null</code>
-	 */
-	public static void isNotNull(Object object) {
-		isNotNull(object, ""); //$NON-NLS-1$
-	}
-	/** Asserts that the given object is not <code>null</code>. If this
-	 * is not the case, some kind of unchecked exception is thrown.
-	 * The given message is included in that exception, to aid debugging.
-	 *
-	 * @param object the value to test
-	 * @param message the message to include in the exception
-	 * @exception IllegalArgumentException if the object is <code>null</code>
-	 */
-	public static void isNotNull(Object object, String message) {
-		if (object == null)
-			throw new AssertionFailedException("null argument:" + message); //$NON-NLS-1$
-	}
-	/** Asserts that the given boolean is <code>true</code>. If this
-	 * is not the case, some kind of unchecked exception is thrown.
-	 *
-	 * @param expression the outcode of the check
-	 * @return <code>true</code> if the check passes (does not return
-	 *    if the check fails)
-	 */
-	public static boolean isTrue(boolean expression) {
-		return isTrue(expression, ""); //$NON-NLS-1$
-	}
-	/** Asserts that the given boolean is <code>true</code>. If this
-	 * is not the case, some kind of unchecked exception is thrown.
-	 * The given message is included in that exception, to aid debugging.
-	 *
-	 * @param expression the outcode of the check
-	 * @param message the message to include in the exception
-	 * @return <code>true</code> if the check passes (does not return
-	 *    if the check fails)
-	 */
-	public static boolean isTrue(boolean expression, String message) {
-		if (!expression)
-			throw new AssertionFailedException("assertion failed: " + message); //$NON-NLS-1$
-		return expression;
-	}
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/AssertionFailedException.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/AssertionFailedException.java
deleted file mode 100644
index 16358e0..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/AssertionFailedException.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-/**
- * <code>AssertionFailedException</code> is a runtime exception thrown
- * by some of the methods in <code>Assert</code>.
- * <p>
- * This class is not declared public to prevent some misuses; programs that catch 
- * or otherwise depend on assertion failures are susceptible to unexpected
- * breakage when assertions in the code are added or removed.
- * </p>
- */
-/* package */
-class AssertionFailedException extends RuntimeException {
-	
-	/** This class is not intended to be serialized. */
-	private static final long serialVersionUID= 1L;
-
-	/** 
-	 * Constructs a new exception.
-	 */
-	public AssertionFailedException() {
-		super();
-	}
-	
-	/** 
-	 * Constructs a new exception with the given message.
-	 * 
-	 * @param detail the detail message
-	 */
-	public AssertionFailedException(String detail) {
-		super(detail);
-	}
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/CompositeExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/CompositeExpression.java
deleted file mode 100644
index d8e89b1..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/CompositeExpression.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.expressions.ExpressionInfo;
-
-public abstract class CompositeExpression extends Expression {
-
-	private static final Expression[] EMPTY_ARRAY= new Expression[0]; 
-	
-	protected List fExpressions;
-	
-	public void add(Expression expression) {
-		if (fExpressions == null)
-			fExpressions= new ArrayList(2);
-		fExpressions.add(expression);
-	}
-	
-	public Expression[] getChildren() {
-		if (fExpressions == null)
-			return EMPTY_ARRAY;
-		return (Expression[])fExpressions.toArray(new Expression[fExpressions.size()]);
-	}
-	
-	protected EvaluationResult evaluateAnd(IEvaluationContext scope) throws CoreException {
-		if (fExpressions == null)
-			return EvaluationResult.TRUE;
-		EvaluationResult result= EvaluationResult.TRUE;
-		for (Iterator iter= fExpressions.iterator(); iter.hasNext();) {
-			Expression expression= (Expression)iter.next();
-			result= result.and(expression.evaluate(scope));
-			// keep iterating even if we have a not loaded found. It can be
-			// that we find a false which will result in a better result.
-			if (result == EvaluationResult.FALSE)
-				return result;
-		}
-		return result;
-	}
-	
-	protected EvaluationResult evaluateOr(IEvaluationContext scope) throws CoreException {
-		if (fExpressions == null)
-			return EvaluationResult.TRUE;
-		EvaluationResult result= EvaluationResult.FALSE;
-		for (Iterator iter= fExpressions.iterator(); iter.hasNext();) {
-			Expression expression= (Expression)iter.next();
-			result= result.or(expression.evaluate(scope));
-			if (result == EvaluationResult.TRUE)
-				return result;
-		}
-		return result;
-	}
-	
-	public void collectExpressionInfo(ExpressionInfo info) {
-		if (fExpressions == null)
-			return;
-		for (Iterator iter= fExpressions.iterator(); iter.hasNext();) {
-			Expression expression= (Expression)iter.next();
-			expression.collectExpressionInfo(info);
-		}
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/CountExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/CountExpression.java
deleted file mode 100644
index 97a56f5..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/CountExpression.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import java.util.Collection;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.expressions.ExpressionInfo;
-
-
-public class CountExpression extends Expression {
-
-	private static final int ANY_NUMBER=	5;
-	private static final int EXACT=			4;
-	private static final int ONE_OR_MORE=	3;
-	private static final int NONE_OR_ONE= 	2;
-	private static final int NONE= 			1;
-	private static final int UNKNOWN= 		0;
-	
-	private int fMode;
-	private int fSize;
-	
-	public CountExpression(IConfigurationElement configElement) {
-		String size = configElement.getAttribute(ATT_VALUE);
-		initializeSize(size);
-	}
-	
-	public CountExpression(String size) {
-		initializeSize(size);
-	}
-	
-	private void initializeSize(String size) {
-		if (size == null)
-			size= "*"; //$NON-NLS-1$
-		if (size.equals("*")) //$NON-NLS-1$
-			fMode= ANY_NUMBER;
-		else if (size.equals("?")) //$NON-NLS-1$
-			fMode= NONE_OR_ONE;
-		else if (size.equals("!")) //$NON-NLS-1$
-			fMode= NONE;
-		else if (size.equals("+")) //$NON-NLS-1$
-			fMode= ONE_OR_MORE;
-		else {
-			try {
-				fSize= Integer.parseInt(size);
-				fMode= EXACT;
-			} catch (NumberFormatException e) {
-				fMode= UNKNOWN;
-			}
-		}
-	}
-
-	public EvaluationResult evaluate(IEvaluationContext context) throws CoreException {
-		Object var= context.getDefaultVariable();
-		Expressions.checkCollection(var, this);
-		Collection collection= (Collection)var;
-		int size= collection.size();
-		switch (fMode) {
-			case UNKNOWN:
-				return EvaluationResult.FALSE;
-			case NONE:
-				return EvaluationResult.valueOf(size == 0);
-			case NONE_OR_ONE:
-				return EvaluationResult.valueOf(size == 0 || size == 1);
-			case ONE_OR_MORE:
-				return EvaluationResult.valueOf(size >= 1);
-			case EXACT:
-				return EvaluationResult.valueOf(fSize == size);
-			case ANY_NUMBER:
-				return EvaluationResult.TRUE;
-		}
-		return EvaluationResult.FALSE;
-	}
-
-	public void collectExpressionInfo(ExpressionInfo info) {
-		info.markDefaultVariableAccessed();
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/DefaultVariable.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/DefaultVariable.java
deleted file mode 100644
index 90ea311..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/DefaultVariable.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.eclipse.core.runtime.CoreException;
-
-import org.eclipse.core.expressions.IEvaluationContext;
-
-/**
- * An evaluation context that can be used to add a new default variable
- * to a hierarchy of evaluation contexts.
- * 
- * @since 3.0
- */
-public final class DefaultVariable implements IEvaluationContext {
-
-	private Object fDefaultVariable;
-	private IEvaluationContext fParent;
-	private IEvaluationContext fManagedPool;
-	
-	/**
-	 * Constructs a new variable pool for a single default variable.
-	 * 
-	 * @param parent the parent context for the default variable. Must not 
-	 *  be <code>null</code>.
-	 * @param defaultVariable the default variable
-	 */
-	public DefaultVariable(IEvaluationContext parent, Object defaultVariable) {
-		Assert.isNotNull(parent);
-		Assert.isNotNull(defaultVariable);
-		fParent= parent;
-		while (parent instanceof DefaultVariable) {
-			parent= parent.getParent();
-		}
-		fManagedPool= parent;
-		fDefaultVariable= defaultVariable;
-	}
-
-	/**
-	 * {@inheritDoc}
-	 */
-	public IEvaluationContext getParent() {
-		return fParent;
-	}
-
-	/**
-	 * {@inheritDoc}
-	 */
-	public IEvaluationContext getRoot() {
-		return fParent.getRoot();
-	}
-
-	/**
-	 * {@inheritDoc}
-	 */
-	public Object getDefaultVariable() {
-		return fDefaultVariable;
-	}
-
-	/**
-	 * {@inheritDoc}
-	 */
-	public void addVariable(String name, Object value) {
-		fManagedPool.addVariable(name, value);
-	}
-
-	/**
-	 * {@inheritDoc}
-	 */
-	public Object removeVariable(String name) {
-		return fManagedPool.removeVariable(name);
-	}
-
-	/**
-	 * {@inheritDoc}
-	 */
-	public Object getVariable(String name) {
-		return fManagedPool.getVariable(name);
-	}
-
-	/**
-	 * {@inheritDoc}
-	 */
-	public Object resolveVariable(String name, Object[] args) throws CoreException {
-		return fManagedPool.resolveVariable(name, args);
-	}
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/EnablementExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/EnablementExpression.java
deleted file mode 100644
index 11ebaa9..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/EnablementExpression.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.IEvaluationContext;
-
-public class EnablementExpression extends CompositeExpression {
-
-	public EnablementExpression(IConfigurationElement configElement) {
-		// config element not used yet.
-	}
-	
-	public EvaluationResult evaluate(IEvaluationContext context) throws CoreException {
-		long start= 0;
-		if (Expressions.TRACING)
-			start= System.currentTimeMillis();
-		EvaluationResult result= evaluateAnd(context);
-		if (Expressions.TRACING) {
-			System.out.println("[Enablement Expression] - evaluation time: " + //$NON-NLS-1$
-				(System.currentTimeMillis() - start) + " ms."); //$NON-NLS-1$
-		}
-		return result;
-	}
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/EqualsExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/EqualsExpression.java
deleted file mode 100644
index d699505..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/EqualsExpression.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.expressions.ExpressionInfo;
-
-public class EqualsExpression extends Expression {
-
-	private Object fExpectedValue; 
-	
-	public EqualsExpression(Object expectedValue) {
-		Assert.isNotNull(expectedValue);
-		fExpectedValue= expectedValue;
-	}
-	
-	public EqualsExpression(IConfigurationElement element) throws CoreException {
-		String value= element.getAttribute(ATT_VALUE);
-		Expressions.checkAttribute(ATT_VALUE, value);
-		fExpectedValue= Expressions.convertArgument(value);
-	}
-	
-	public EvaluationResult evaluate(IEvaluationContext context) throws CoreException {
-		Object element= context.getDefaultVariable();
-		return EvaluationResult.valueOf(element.equals(fExpectedValue));
-	}
-
-	public void collectExpressionInfo(ExpressionInfo info) {
-		info.markDefaultVariableAccessed();
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ExpressionMessages.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ExpressionMessages.java
deleted file mode 100644
index 67063b3..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ExpressionMessages.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.eclipse.osgi.util.NLS;
-
-public final class ExpressionMessages extends NLS {
-
-	private static final String BUNDLE_NAME= "org.eclipse.core.internal.expressions.ExpressionMessages";//$NON-NLS-1$
-
-	private ExpressionMessages() {
-		// Do not instantiate
-	}
-
-	public static String Expression_attribute_missing;
-	public static String Expression_attribute_invalid_value;
-	public static String Expression_variable_not_a_collection;
-	public static String Expression_variable_not_a_list;
-	public static String Expression_unknown_element;
-	public static String Expression_string_not_correctly_escaped;
-	public static String Expression_string_not_terminated;
-	public static String TypeExtender_unknownMethod;
-	public static String TypeExtender_incorrectType;
-	public static String TestExpression_no_name_space;
-	public static String WithExpression_variable_not_defined;
-	public static String ResolveExpression_variable_not_defined;
-	public static String PropertyTesterDescriptor_no_namespace;
-	public static String PropertyTesterDescritpri_no_properties;
-
-	static {
-		NLS.initializeMessages(BUNDLE_NAME, ExpressionMessages.class);
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ExpressionMessages.properties b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ExpressionMessages.properties
deleted file mode 100644
index 62d6a79..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ExpressionMessages.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-Expression_attribute_missing=Mandatory attribute {0} is missing
-Expression_attribute_invalid_value=Attribute value {0} is not valid
-
-Expression_variable_not_a_collection= The default variable is not of type java.util.Collection. Failed expression: \n{0}
-Expression_variable_not_a_list= The default variable is not of type java.util.List. Failed expression: \n{0}
-
-Expression_unknown_element= Unknown expression element {0}
-
-Expression_string_not_correctly_escaped= The String {0} is not correctly escaped. Wrong number of apostrophe characters.
-Expression_string_not_terminated= The String {0} is not correctly terminated with an apostrophe character.
-
-TypeExtender_unknownMethod= No property tester contributes a property {0} to type {1}
-TypeExtender_incorrectType=The implementation class is not a sub type of org.eclipse.core.expressions.PropertyTester
-
-TestExpression_no_name_space= The property attribute of the test expression must be qualified by a name space.
-
-WithExpression_variable_not_defined= The variable {0} is not defined
-
-ResolveExpression_variable_not_defined= The variable {0} is not defined
-
-PropertyTesterDescriptor_no_namespace= The mandatory attribute namespace is missing. Tester has been disabled.
-PropertyTesterDescritpri_no_properties= The mandatory attribute properties is missing. Tester has been disabled.
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ExpressionPlugin.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ExpressionPlugin.java
deleted file mode 100644
index 6a29a57..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ExpressionPlugin.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.eclipse.core.runtime.Plugin;
-
-import org.osgi.framework.BundleContext;
-
-public class ExpressionPlugin extends Plugin {
-	
-	private static ExpressionPlugin fgDefault;
-	
-	private BundleContext fBundleContext;
-	
-	public ExpressionPlugin() {
-		fgDefault= this;
-	}	
-
-	public static ExpressionPlugin getDefault() {
-		return fgDefault;
-	}
-	
-	public static String getPluginId() {
-		return "org.eclipse.core.expressions"; //$NON-NLS-1$
-	}
-	
-	/**
-	 * {@inheritDoc}
-	 */
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-		fBundleContext= context;
-	}
-	
-	/**
-	 * {@inheritDoc}
-	 */
-	public void stop(BundleContext context) throws Exception {
-		super.stop(context);
-	}
-	
-	public BundleContext getBundleContext() {
-		return fBundleContext;
-	}
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ExpressionStatus.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ExpressionStatus.java
deleted file mode 100644
index 39f690b..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ExpressionStatus.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-
-/**
- * Represents the outcome of an expression evaluation. Status objects are
- * used inside {@link org.eclipse.core.runtime.CoreException} objects to 
- * indicate what went wrong.
- * 
- * @see org.eclipse.core.runtime.CoreException
- * 
- * @since 3.0
- */
-public class ExpressionStatus extends Status {
-	
-	/** Error code indicating that the variable in focus in not a collection */
-	public static final int VARIABLE_IS_NOT_A_COLLECTION= 3;
-	
-	/** Error code indicating that the variable in focus in not a list */
-	public static final int VARIABLE_IS_NOT_A_LIST= 4;
-	
-	/** Error code indicating that an attribute value doesn't present an integer */
-	public static final int VALUE_IS_NOT_AN_INTEGER= 5;
-	
-	/** Error code indicating that a mandatory attribute is missing */
-	public static final int MISSING_ATTRIBUTE= 50;
-	
-	/** Error code indicating that the value specified for an attribute is invalid */
-	public static final int WRONG_ATTRIBUTE_VALUE= 51;
-
-	/** Error code indicating that the number of arguments passed to resolve variable is incorrect. */
-	public static final int VARAIBLE_POOL_WRONG_NUMBER_OF_ARGUMENTS= 100;
-	
-	/** Error code indicating that the argument passed to resolve a variable is not of type java.lang.String */
-	public static final int VARAIBLE_POOL_ARGUMENT_IS_NOT_A_STRING= 101;
-	
-	/** Error code indicating that a plugin providing a certain type extender isn't loaded yet */ 
-	public static final int TYPE_EXTENDER_PLUGIN_NOT_LOADED= 200;
-	
-	/** Error indicating that a property referenced in a test expression can't be resolved */
-	public static final int TYPE_EXTENDER_UNKOWN_METHOD= 201;
-	
-	/** Error code indicating that the implementation class of a type extender is not of type TypeExtender */
-	public static final int TYPE_EXTENDER_INCORRECT_TYPE= 202;
-	
-	/** Error indicating that the value returned from a type extender isn't of type boolean */
-	public static final int TEST_EXPRESSION_NOT_A_BOOLEAN= 203;
-	
-	/** Error indicating that the property attribute of the test element doesn't have a name space */
-	public static final int NO_NAMESPACE_PROVIDED= 300;
-	
-	/** Error indicating that a variable accessed in a with expression isn't available in the evaluation context */
-	public static final int VARIABLE_NOT_DEFINED= 301;
-	
-	/** Error indicating that in a string passed via a arg attribute the apostrophe character isn't correctly escaped */
-	public static final int STRING_NOT_CORRECT_ESCAPED= 302;
-	
-	/** Error indicating that a string passed via a arg attribute isn't correctly terminated with an apostrophe */
-	public static final int STRING_NOT_TERMINATED= 303;
-	
-	/**
-	 * Creates a new expression status.
-	 * 
-	 * @param errorCode the error code of the status
-	 * @param message a human-readable message, localized to the current locale
-	 */
-	public ExpressionStatus(int errorCode, String message) {
-		this(errorCode, message, null);
-	}
-	
-	/**
-	 * Creates a new expression status.
-	 * 
-	 * @param errorCode the error code of the status
-	 * @param message a human-readable message, localized to the current locale
-	 * @param exception a low-level exception, or <code>null</code> if not applicable 
-	 */
-	public ExpressionStatus(int errorCode, String message, Throwable exception) {
-		super(IStatus.ERROR, ExpressionPlugin.getPluginId(), errorCode, message, exception);
-	}	
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/Expressions.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/Expressions.java
deleted file mode 100644
index 70a9787..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/Expressions.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.Platform;
-
-import org.eclipse.core.expressions.Expression;
-
-public class Expressions {
-	
-	/* debugging flag to enable tracing */
-	public static final boolean TRACING;
-	static {
-		String value= Platform.getDebugOption("org.eclipse.core.expressions/tracePropertyResolving"); //$NON-NLS-1$
-		TRACING= value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$
-	}
-	
-	private Expressions() {
-		// no instance
-	}
-	
-	public static boolean isInstanceOf(Object element, String type) {
-		// null isn't an instanceof of anything.
-		if (element == null)
-			return false;
-		return isSubtype(element.getClass(), type); 
-	}
-	
-	private static boolean isSubtype(Class clazz, String type) {
-		if (clazz.getName().equals(type))
-			return true;
-		Class superClass= clazz.getSuperclass();
-		if (superClass != null && isSubtype(superClass, type))
-			return true;
-		Class[] interfaces= clazz.getInterfaces();
-		for (int i= 0; i < interfaces.length; i++) {
-			if (isSubtype(interfaces[i], type))
-				return true;
-		} 
-		return false;
-	}
-	
-	public static void checkAttribute(String name, String value) throws CoreException {
-		if (value == null) {
-			throw new CoreException(new ExpressionStatus(
-				ExpressionStatus.MISSING_ATTRIBUTE, 
-				Messages.format(ExpressionMessages.Expression_attribute_missing, name))); 
-		}
-	}
-	
-	public static void checkAttribute(String name, String value, String[] validValues) throws CoreException {
-		checkAttribute(name, value);
-		for (int i= 0; i < validValues.length; i++) {
-			if (value.equals(validValues[i]))
-				return;
-		}
-		throw new CoreException(new ExpressionStatus(
-			ExpressionStatus.WRONG_ATTRIBUTE_VALUE, 
-			Messages.format(ExpressionMessages.Expression_attribute_invalid_value, value))); 
-	}
-	
-	public static void checkCollection(Object var, Expression expression) throws CoreException {
-		if (var instanceof Collection)
-			return;
-		throw new CoreException(new ExpressionStatus(
-			ExpressionStatus.VARIABLE_IS_NOT_A_COLLECTION, 
-			Messages.format(ExpressionMessages.Expression_variable_not_a_collection, expression.toString()))); 
-	}
-	
-	public static void checkList(Object var, Expression expression) throws CoreException {
-		if (var instanceof List)
-			return;
-		throw new CoreException(new ExpressionStatus(
-			ExpressionStatus.VARIABLE_IS_NOT_A_LIST, 
-			Messages.format(ExpressionMessages.Expression_variable_not_a_list, expression.toString()))); 
-	}
-	
-	//---- Argument parsing --------------------------------------------
-	
-	private static final Object[] EMPTY_ARGS= new Object[0];
-	
-	public static Object[] getArguments(IConfigurationElement element, String attributeName) throws CoreException {
-		String args= element.getAttribute(attributeName);
-		if (args != null) {
-			return parseArguments(args);
-		} else {
-			return EMPTY_ARGS;
-		}
-	}
-	
-	public static Object[] parseArguments(String args) throws CoreException {
-		List result= new ArrayList();
-		int start= 0;
-		int comma;
-		while ((comma= findNextComma(args, start)) != -1) {
-			result.add(convertArgument(args.substring(start, comma).trim()));
-			start= comma + 1;
-		}
-		result.add(convertArgument(args.substring(start).trim()));
-		return result.toArray();
-	}
-	
-	private static int findNextComma(String str, int start) throws CoreException {
-		boolean inString= false;
-		for (int i= start; i < str.length(); i++) {
-			char ch= str.charAt(i);
-			if (ch == ',' && ! inString) 
-				return i;
-			if (ch == '\'') {
-				if (!inString) {
-					inString= true;
-				} else {
-					if (i + 1 < str.length() && str.charAt(i + 1) == '\'') {
-						i++;
-					} else {
-						inString= false;
-					}
-				}
-			} else if (ch == ',' && !inString) {
-				return i;
-			}
-		}
-		if (inString)
-			throw new CoreException(new ExpressionStatus(
-				ExpressionStatus.STRING_NOT_TERMINATED, 
-				Messages.format(ExpressionMessages.Expression_string_not_terminated, str))); 
-			
-		return -1;
-	}
-		
-	public static Object convertArgument(String arg) throws CoreException {
-		if (arg == null) {
-			return null;
-		} else if (arg.length() == 0) {
-			return arg;
-		} else if (arg.charAt(0) == '\'' && arg.charAt(arg.length() - 1) == '\'') {
-			return unEscapeString(arg.substring(1, arg.length() - 1));
-		} else if ("true".equals(arg)) { //$NON-NLS-1$
-			return Boolean.TRUE;
-		} else if ("false".equals(arg)) { //$NON-NLS-1$
-			return Boolean.FALSE;
-		} else if (arg.indexOf('.') != -1) {
-			try {
-				return Float.valueOf(arg);
-			} catch (NumberFormatException e) {
-				return arg;
-			}
-		} else {
-			try {
-				return Integer.valueOf(arg);
-			} catch (NumberFormatException e) {
-				return arg;
-			}
-		}
-	}
-
-	public static String unEscapeString(String str) throws CoreException {
-		StringBuffer result= new StringBuffer();
-		for (int i= 0; i < str.length(); i++) {
-			char ch= str.charAt(i);
-			if (ch == '\'') {
-				if (i == str.length() - 1 || str.charAt(i + 1) != '\'')
-					throw new CoreException(new ExpressionStatus(
-						ExpressionStatus.STRING_NOT_CORRECT_ESCAPED, 
-						Messages.format(ExpressionMessages.Expression_string_not_correctly_escaped, str))); 
-				result.append('\'');
-				i++;
-			} else {
-				result.append(ch);
-			}
-		}
-		return result.toString();
-	}
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/InstanceofExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/InstanceofExpression.java
deleted file mode 100644
index c579aa3..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/InstanceofExpression.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.expressions.ExpressionInfo;
-
-public class InstanceofExpression extends Expression {
-
-	private String fTypeName;
-	
-	public InstanceofExpression(IConfigurationElement element) throws CoreException {
-		fTypeName= element.getAttribute(ATT_VALUE);
-		Expressions.checkAttribute(ATT_VALUE, fTypeName);
-	}
-	
-	public InstanceofExpression(String typeName) {
-		Assert.isNotNull(typeName);
-		fTypeName= typeName;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jdt.internal.corext.refactoring.participants.Expression#evaluate(java.lang.Object)
-	 */
-	public EvaluationResult evaluate(IEvaluationContext context) {
-		Object element= context.getDefaultVariable();
-		return EvaluationResult.valueOf(Expressions.isInstanceOf(element, fTypeName));
-	}
-	
-	public void collectExpressionInfo(ExpressionInfo info) {
-		info.markDefaultVariableAccessed();
-	}
-	
-	//---- Debugging ---------------------------------------------------
-	
-	/* (non-Javadoc)
-	 * @see java.lang.Object#toString()
-	 */
-	public String toString() {
-		return "<instanceof value=\"" + fTypeName + "\"/>"; //$NON-NLS-1$ //$NON-NLS-2$
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/IterateExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/IterateExpression.java
deleted file mode 100644
index 8e352d9..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/IterateExpression.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.expressions.ExpressionInfo;
-
-public class IterateExpression extends CompositeExpression {
-	
-	private static class IteratePool implements IEvaluationContext {
-		
-		private Iterator fIterator;
-		private Object fDefaultVariable;
-		private IEvaluationContext fParent;
-		
-		public IteratePool(IEvaluationContext parent, Iterator iterator) {
-			Assert.isNotNull(parent);
-			Assert.isNotNull(iterator);
-			fParent= parent;
-			fIterator= iterator;
-		}
-		public IEvaluationContext getParent() {
-			return fParent;
-		}
-		public IEvaluationContext getRoot() {
-			return fParent.getRoot();
-		}
-		public Object getDefaultVariable() {
-			return fDefaultVariable;
-		}
-		public void addVariable(String name, Object value) {
-			fParent.addVariable(name, value);
-		}
-		public Object removeVariable(String name) {
-			return fParent.removeVariable(name);
-		}
-		public Object getVariable(String name) {
-			return fParent.getVariable(name);
-		}
-		public Object resolveVariable(String name, Object[] args) throws CoreException {
-			return fParent.resolveVariable(name, args);
-		}
-		public Object next() {
-			fDefaultVariable= fIterator.next();
-			return fDefaultVariable;
-		}
-		public boolean hasNext() {
-			return fIterator.hasNext();
-		}
-	}
-	
-	private static final String ATT_OPERATOR= "operator"; //$NON-NLS-1$
-	private static final int OR= 1;
-	private static final int AND= 2;
-	
-	private int fOperator;
-	
-	public IterateExpression(IConfigurationElement configElement) throws CoreException {
-		String opValue= configElement.getAttribute(ATT_OPERATOR);
-		initializeOperatorValue(opValue);
-	}
-	
-	public IterateExpression(String opValue) throws CoreException {
-		initializeOperatorValue(opValue);
-	}
-	
-	private void initializeOperatorValue(String opValue) throws CoreException {
-		if (opValue == null) {
-			fOperator= AND;
-		} else {
-			Expressions.checkAttribute(ATT_OPERATOR, opValue, new String[] {"and", "or"});  //$NON-NLS-1$//$NON-NLS-2$
-			if ("and".equals(opValue)) { //$NON-NLS-1$
-				fOperator= AND;
-			} else {
-				fOperator= OR;
-			}
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see Expression#evaluate(IVariablePool)
-	 */
-	public EvaluationResult evaluate(IEvaluationContext context) throws CoreException {
-		Object var= context.getDefaultVariable();
-		Expressions.checkCollection(var, this);
-		Collection col= (Collection)var;
-		switch (col.size()) {
-			case 0:
-				return fOperator == AND ? EvaluationResult.TRUE : EvaluationResult.FALSE;
-			case 1:
-				if (col instanceof List)
-					return evaluateAnd(new DefaultVariable(context, ((List)col).get(0)));
-				// fall through
-			default:
-				IteratePool iter= new IteratePool(context, col.iterator());
-				EvaluationResult result= fOperator == AND ? EvaluationResult.TRUE : EvaluationResult.FALSE;
-				while (iter.hasNext()) {
-					iter.next();
-					switch(fOperator) {
-						case OR:
-							result= result.or(evaluateAnd(iter));
-							if (result == EvaluationResult.TRUE)
-								return result;
-							break;
-						case AND:
-							result= result.and(evaluateAnd(iter));
-							if (result != EvaluationResult.TRUE)
-								return result;
-							break;
-					}
-				}
-				return result;
-		}
-	}
-
-	public void collectExpressionInfo(ExpressionInfo info) {
-		// Although we access every single variable we only mark the default
-		// variable as accessed since we don't have single variables for the
-		// elements.
-		info.markDefaultVariableAccessed();
-		super.collectExpressionInfo(info);
-	}
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/Messages.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/Messages.java
deleted file mode 100644
index c17ee61..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/Messages.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import java.text.MessageFormat;
-
-/**
- * Helper class to format message strings.
- * 
- * @since 3.1
- */
-public class Messages {
-
-	public static String format(String message, Object object) {
-		return MessageFormat.format(message, new Object[] { object});
-	}
-
-	public static String format(String message, Object[] objects) {
-		return MessageFormat.format(message, objects);
-	}
-
-	private Messages() {
-		// Not for instantiation
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/NotExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/NotExpression.java
deleted file mode 100644
index 02104e5..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/NotExpression.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.eclipse.core.runtime.CoreException;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.expressions.ExpressionInfo;
-
-public class NotExpression extends Expression {
-
-	private Expression fExpression;
-
-	public NotExpression(Expression expression) {
-		Assert.isNotNull(expression);
-		fExpression= expression;
-	}
-	
-	public EvaluationResult evaluate(IEvaluationContext context) throws CoreException {
-		return fExpression.evaluate(context).not();
-	}
-	
-	public void collectExpressionInfo(ExpressionInfo info) {
-		fExpression.collectExpressionInfo(info);
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/OrExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/OrExpression.java
deleted file mode 100644
index ae59b61..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/OrExpression.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.eclipse.core.runtime.CoreException;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.IEvaluationContext;
-
-public class OrExpression extends CompositeExpression { 
-
-	public EvaluationResult evaluate(IEvaluationContext context) throws CoreException {
-		return evaluateOr(context);
-	}	
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/Property.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/Property.java
deleted file mode 100644
index 40dbb1e..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/Property.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.eclipse.core.expressions.IPropertyTester;
-
-public class Property {
-	
-	private Class fType;
-	private String fNamespace;
-	private String fName;
-	
-	private IPropertyTester fTester;
-
-	/* package */ Property(Class type, String namespace, String name) {
-		Assert.isNotNull(type);
-		Assert.isNotNull(namespace);
-		Assert.isNotNull(name);
-		
-		fType= type;
-		fNamespace= namespace;
-		fName= name;
-	}
-	
-	/* package */ void setPropertyTester(IPropertyTester tester) {
-		Assert.isNotNull(tester);
-		fTester= tester;
-	}
-	
-	public boolean isInstantiated() {
-		return fTester.isInstantiated();
-	}
-	
-	public boolean isDeclaringPluginActive() {
-		return fTester.isDeclaringPluginActive();
-	}
-	
-	public boolean isValidCacheEntry() {
-		return 	(isInstantiated() && isDeclaringPluginActive()) ||
-				(!isInstantiated() && !isDeclaringPluginActive());
-	}
- 	
-	public boolean test(Object receiver, Object[] args, Object expectedValue) {
-		return fTester.test(receiver, fName, args, expectedValue);
-	}
-	
-	public boolean equals(Object obj) {
-		if (!(obj instanceof Property))
-			return false;
-		Property other= (Property)obj;
-		return fType.equals(other.fType) && fNamespace.equals(other.fNamespace) && fName.equals(other.fName);
-	}
-	
-	public int hashCode() {
-		return (fType.hashCode() << 16) | fNamespace.hashCode() << 8 | fName.hashCode();
-	}
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/PropertyCache.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/PropertyCache.java
deleted file mode 100644
index 5bbb1b7..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/PropertyCache.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import java.util.LinkedHashMap;
-import java.util.Map.Entry;
-
-/* package */ class PropertyCache {
-	
-	private LinkedHashMap fCache;
-	
-	public PropertyCache(final int cacheSize) {
-		// start with 100 elements but be able to grow until cacheSize
-		fCache= new LinkedHashMap(100, 0.75f, true) {
-			/** This class is not intended to be serialized. */
-			private static final long serialVersionUID= 1L;
-			protected boolean removeEldestEntry(Entry eldest) {
-				return size() > cacheSize;
-			}
-		};
-	}
-	
-	public Property get(Property key) {
-		return (Property)fCache.get(key);
-	}
-	
-	public void put(Property method) {
-		fCache.put(method, method);
-	}
-	
-	public void remove(Property method) {
-		fCache.remove(method);
-	}
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/PropertyTesterDescriptor.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/PropertyTesterDescriptor.java
deleted file mode 100644
index 3290201..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/PropertyTesterDescriptor.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-
-import org.eclipse.core.expressions.IPropertyTester;
-
-import org.osgi.framework.Bundle;
-
-public class PropertyTesterDescriptor implements IPropertyTester {
-	
-	private IConfigurationElement fConfigElement;
-	private String fNamespace;
-	private String fProperties;
-	
-	private static final String PROPERTIES= "properties"; //$NON-NLS-1$
-	private static final String NAMESPACE= "namespace"; //$NON-NLS-1$
-	private static final String CLASS= "class";  //$NON-NLS-1$
-	
-	public PropertyTesterDescriptor(IConfigurationElement element) throws CoreException {
-		fConfigElement= element;
-		fNamespace= fConfigElement.getAttribute(NAMESPACE);
-		if (fNamespace == null) {
-			throw new CoreException(new Status(IStatus.ERROR, ExpressionPlugin.getPluginId(),
-				IStatus.ERROR, 
-				ExpressionMessages.PropertyTesterDescriptor_no_namespace, 
-				null));
-		}
-		StringBuffer buffer= new StringBuffer(","); //$NON-NLS-1$
-		String properties= element.getAttribute(PROPERTIES);
-		if (properties == null) {
-			throw new CoreException(new Status(IStatus.ERROR, ExpressionPlugin.getPluginId(),
-				IStatus.ERROR, 
-				ExpressionMessages.PropertyTesterDescritpri_no_properties, 
-				null));
-		}
-		for (int i= 0; i < properties.length(); i++) {
-			char ch= properties.charAt(i);
-			if (!Character.isWhitespace(ch))
-				buffer.append(ch);
-		}
-		buffer.append(',');
-		fProperties= buffer.toString();
-	}
-	
-	public PropertyTesterDescriptor(IConfigurationElement element, String namespace, String properties) {
-		fConfigElement= element;
-		fNamespace= namespace;
-		fProperties= properties;
-	}
-	
-	public String getProperties() {
-		return fProperties;
-	}
-	
-	public String getNamespace() {
-		return fNamespace;
-	}
-	
-	public IConfigurationElement getConfigurationElement() {
-		return fConfigElement;
-	}
-	
-	public boolean handles(String namespace, String property) {
-		return fNamespace.equals(namespace) && fProperties.indexOf("," + property + ",") != -1;  //$NON-NLS-1$//$NON-NLS-2$
-	}
-	
-	public boolean isInstantiated() {
-		return false;
-	}
-	
-	public boolean isDeclaringPluginActive() {
-		Bundle fBundle= Platform.getBundle(fConfigElement.getNamespace());
-		return fBundle.getState() == Bundle.ACTIVE;		
-	}
-	
-	public IPropertyTester instantiate() throws CoreException {
-		return (IPropertyTester)fConfigElement.createExecutableExtension(CLASS);
-	}
-	
-	public boolean test(Object receiver, String method, Object[] args, Object expectedValue) {
-		Assert.isTrue(false, "Method should never be called"); //$NON-NLS-1$
-		return false;
-	}
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ResolveExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ResolveExpression.java
deleted file mode 100644
index 579a18a..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ResolveExpression.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-
-import org.eclipse.core.expressions.EvaluationContext;
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.expressions.ExpressionInfo;
-
-public class ResolveExpression extends CompositeExpression {
-
-	private String fVariable;
-	private Object[] fArgs;
-	
-	private static final String ATT_VARIABLE= "variable";  //$NON-NLS-1$
-	private static final String ATT_ARGS= "args";  //$NON-NLS-1$
-	
-	public ResolveExpression(IConfigurationElement configElement) throws CoreException {
-		fVariable= configElement.getAttribute(ATT_VARIABLE);
-		Expressions.checkAttribute(ATT_VARIABLE, fVariable);
-		fArgs= Expressions.getArguments(configElement, ATT_ARGS);
-	}
-	
-	public ResolveExpression(String variable, Object[] args) {
-		Assert.isNotNull(variable);
-		fVariable= variable;
-		fArgs= args;
-	}
-
-	public EvaluationResult evaluate(IEvaluationContext context) throws CoreException {
-		Object variable= context.resolveVariable(fVariable, fArgs);
-		if (variable == null) {
-			throw new CoreException(new ExpressionStatus(
-				ExpressionStatus.VARIABLE_NOT_DEFINED,
-				Messages.format(ExpressionMessages.ResolveExpression_variable_not_defined, fVariable))); 
-		}
-		return evaluateAnd(new EvaluationContext(context, variable));
-	}
-	
-	public void collectExpressionInfo(ExpressionInfo info) {
-		ExpressionInfo other= new ExpressionInfo();
-		super.collectExpressionInfo(other);
-		if (other.hasDefaultVariableAccess()) {
-			info.addVariableNameAccess(fVariable);
-		}
-		info.mergeExceptDefaultVariable(other);
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/StandardElementHandler.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/StandardElementHandler.java
deleted file mode 100644
index d897b04..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/StandardElementHandler.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-
-import org.eclipse.core.expressions.ElementHandler;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionConverter;
-import org.eclipse.core.expressions.ExpressionTagNames;
-
-public class StandardElementHandler extends ElementHandler {
-	
-	public Expression create(ExpressionConverter converter, IConfigurationElement element) throws CoreException {
-		String name= element.getName();
-		if (ExpressionTagNames.INSTANCEOF.equals(name)) {
-			return new InstanceofExpression(element);
-		} else if (ExpressionTagNames.TEST.equals(name)) {
-			return new TestExpression(element);
-		} else if (ExpressionTagNames.OR.equals(name)) {
-			OrExpression result= new OrExpression();
-			processChildren(converter, element, result);
-			return result;
-		} else if (ExpressionTagNames.AND.equals(name)) {
-			AndExpression result= new AndExpression();
-			processChildren(converter, element, result);
-			return result;
-		} else if (ExpressionTagNames.NOT.equals(name)) {
-			return new NotExpression(converter.perform(element.getChildren()[0]));
-		} else if (ExpressionTagNames.WITH.equals(name)) {
-			WithExpression result= new WithExpression(element);
-			processChildren(converter, element, result);
-			return result;
-		} else if (ExpressionTagNames.ADAPT.equals(name)) {
-			AdaptExpression result= new AdaptExpression(element);
-			processChildren(converter, element, result);
-			return result;
-		} else if (ExpressionTagNames.ITERATE.equals(name)) {
-			IterateExpression result= new IterateExpression(element);
-			processChildren(converter, element, result);
-			return result;
-		} else if (ExpressionTagNames.COUNT.equals(name)) {
-			return new CountExpression(element);
-		} else if (ExpressionTagNames.SYSTEM_TEST.equals(name)) {
-			return new SystemTestExpression(element);
-		} else if (ExpressionTagNames.RESOLVE.equals(name)) {
-			ResolveExpression result= new ResolveExpression(element);
-			processChildren(converter, element, result);
-			return result;
-		} else if (ExpressionTagNames.ENABLEMENT.equals(name)) {
-			EnablementExpression result= new EnablementExpression(element);
-			processChildren(converter, element, result);
-			return result;
-		} else if (ExpressionTagNames.EQUALS.equals(name)) {
-			return new EqualsExpression(element);
-		}
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/SystemTestExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/SystemTestExpression.java
deleted file mode 100644
index b9c2793..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/SystemTestExpression.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.expressions.ExpressionInfo;
-
-public class SystemTestExpression extends Expression {
-
-	private String fProperty;
-	private String fExpectedValue;
-	
-	private static final String ATT_PROPERTY= "property"; //$NON-NLS-1$
-	
-	public SystemTestExpression(IConfigurationElement element) throws CoreException {
-		fProperty= element.getAttribute(ATT_PROPERTY);
-		Expressions.checkAttribute(ATT_PROPERTY, fProperty);
-		fExpectedValue= element.getAttribute(ATT_VALUE);
-		Expressions.checkAttribute(ATT_VALUE, fExpectedValue);
-	}
-	
-	public SystemTestExpression(String property, String expectedValue) {
-		fProperty= property;
-		fExpectedValue= expectedValue;
-	}
-	
-	public EvaluationResult evaluate(IEvaluationContext context) throws CoreException {
-		String str= System.getProperty(fProperty);
-		if (str == null) 
-			return EvaluationResult.FALSE;
-		return EvaluationResult.valueOf(str.equals(fExpectedValue));
-	}
-
-	public void collectExpressionInfo(ExpressionInfo info) {
-		info.markSystemPropertyAccessed();
-	}
-	
-	//---- Debugging ---------------------------------------------------
-	
-	/* (non-Javadoc)
-	 * @see java.lang.Object#toString()
-	 */
-	public String toString() {
-		return "<systemTest property=\"" + fProperty +  //$NON-NLS-1$
-		  "\" value=\"" + fExpectedValue + "\""; //$NON-NLS-1$ //$NON-NLS-2$
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/TestExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/TestExpression.java
deleted file mode 100644
index a061d68..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/TestExpression.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.expressions.ExpressionInfo;
-
-public class TestExpression extends Expression {
-
-	private String fNamespace;
-	private String fProperty;
-	private Object[] fArgs;
-	private Object fExpectedValue;
-	
-	private static final String ATT_PROPERTY= "property"; //$NON-NLS-1$
-	private static final String ATT_ARGS= "args"; //$NON-NLS-1$
-	
-	private static final TypeExtensionManager fgTypeExtensionManager= new TypeExtensionManager("propertyTesters"); //$NON-NLS-1$
-	
-	public TestExpression(IConfigurationElement element) throws CoreException {
-		String property= element.getAttribute(ATT_PROPERTY);
-		int pos= property.lastIndexOf('.');
-		if (pos == -1) {
-			throw new CoreException(new ExpressionStatus(
-				ExpressionStatus.NO_NAMESPACE_PROVIDED,
-				ExpressionMessages.TestExpression_no_name_space)); 
-		}
-		fNamespace= property.substring(0, pos);
-		fProperty= property.substring(pos + 1);
-		fArgs= Expressions.getArguments(element, ATT_ARGS);
-		fExpectedValue= Expressions.convertArgument(element.getAttribute(ATT_VALUE));
-	}
-	
-	public TestExpression(String namespace, String property, Object[] args, Object expectedValue) {
-		fNamespace= namespace;
-		fProperty= property;
-		fArgs= args;
-		fExpectedValue= expectedValue;
-	}
-	
-	public EvaluationResult evaluate(IEvaluationContext context) throws CoreException {
-		Object element= context.getDefaultVariable();
-		if (System.class.equals(element)) {
-			String str= System.getProperty(fProperty);
-			if (str == null) 
-				return EvaluationResult.FALSE;
-			return EvaluationResult.valueOf(str.equals(fArgs[0]));
-		}
-		Property property= fgTypeExtensionManager.getProperty(element, fNamespace, fProperty);
-		if (!property.isInstantiated())
-			return EvaluationResult.NOT_LOADED;
-		return EvaluationResult.valueOf(property.test(element, fArgs, fExpectedValue));
-	}
-
-	public void collectExpressionInfo(ExpressionInfo info) {
-		info.markDefaultVariableAccessed();
-	}
-	
-	//---- Debugging ---------------------------------------------------
-	
-	/* (non-Javadoc)
-	 * @see java.lang.Object#toString()
-	 */
-	public String toString() {
-		StringBuffer args= new StringBuffer();
-		for (int i= 0; i < fArgs.length; i++) {
-			Object arg= fArgs[i];
-			if (arg instanceof String) {
-				args.append('\'');
-				args.append(arg);
-				args.append('\'');
-			} else {
-				args.append(arg.toString());
-			}
-			if (i < fArgs.length - 1)
-				args.append(", "); //$NON-NLS-1$
-		}
-		return "<test property=\"" + fProperty +  //$NON-NLS-1$
-		  (fArgs.length != 0 ? "\" args=\"" + args + "\"" : "\"") + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		  (fExpectedValue != null ? "\" value=\"" + fExpectedValue + "\"" : "\"") + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		  "/>"; //$NON-NLS-1$
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/TypeExtension.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/TypeExtension.java
deleted file mode 100644
index 552262a..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/TypeExtension.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.eclipse.core.runtime.CoreException;
-
-import org.eclipse.core.expressions.IPropertyTester;
-import org.eclipse.core.expressions.PropertyTester;
-
-public class TypeExtension {
-	
-	private static final TypeExtension[] EMPTY_TYPE_EXTENSION_ARRAY= new TypeExtension[0];
-
-	/* a special property tester instance that used to signal that method searching has to continue */
-	/* package */ static final IPropertyTester CONTINUE= new IPropertyTester() {
-		public boolean handles(String namespace, String method) {
-			return false;
-		}
-		public boolean isInstantiated() {
-			return true;
-		}
-		public boolean isDeclaringPluginActive() {
-			return true;
-		}
-		public IPropertyTester instantiate() {
-			return this;
-		}
-		public boolean test(Object receiver, String method, Object[] args, Object expectedValue) {
-			return false;
-		}
-	};
-		
-	/* a special type extension instance that marks the end of an evaluation chain */
-	private static final TypeExtension END_POINT= new TypeExtension() {
-		/* package */ IPropertyTester findTypeExtender(TypeExtensionManager manager, String namespace, String name, boolean staticMethod) throws CoreException {
-			return CONTINUE;
-		}
-	};
-		
-	/* the type this extension is extending */
-	private Class fType;
-	/* the list of associated extenders */
-	private IPropertyTester[] fExtenders;
-	
-	/* the extension associated with <code>fType</code>'s super class */
-	private TypeExtension fExtends;
-	/* the extensions associated with <code>fTypes</code>'s interfaces */ 
-	private TypeExtension[] fImplements;
-	
-	private TypeExtension() {
-		// special constructor to create the CONTINUE instance
-	}
-	
-	/* package */ TypeExtension(Class type) {
-		Assert.isNotNull(type);
-		fType= type;
-	}
-	
-	/* package */ IPropertyTester findTypeExtender(TypeExtensionManager manager, String namespace, String method, boolean staticMethod) throws CoreException {
-		if (fExtenders == null) {
-			fExtenders= manager.loadTesters(fType);
-		}
-		IPropertyTester result;
-		
-		// handle extenders associated with this type extender
-		for (int i= 0; i < fExtenders.length; i++) {
-			IPropertyTester extender= fExtenders[i];
-			if (extender == null || !extender.handles(namespace, method))
-				continue;
-			if (extender.isInstantiated()) {
-				if (extender.isDeclaringPluginActive()) {
-					return extender;
-				} else {
-					PropertyTester tester= (PropertyTester)extender;
-					fExtenders[i]= extender= tester.internalCreateDescriptor();
-					return extender;
-				}
-			} else {
-				if (extender.isDeclaringPluginActive()) {
-					try {
-						PropertyTesterDescriptor descriptor= (PropertyTesterDescriptor)extender;
-						IPropertyTester inst= descriptor.instantiate();
-						((PropertyTester)inst).internalInitialize(descriptor);
-						fExtenders[i]= extender= inst;
-						return extender;
-					} catch (CoreException e) {
-						fExtenders[i]= null;
-						throw e;
-					} catch (ClassCastException e) {
-						fExtenders[i]= null;
-						throw new CoreException(new ExpressionStatus(
-							ExpressionStatus.TYPE_EXTENDER_INCORRECT_TYPE,
-							ExpressionMessages.TypeExtender_incorrectType,  
-							e));
-					}
-				} else {
-					return extender;
-				}
-			}
-		}
-		
-		// there is no inheritance for static methods
-		if (staticMethod) 
-			return CONTINUE;
-		
-		// handle extends chain
-		if (fExtends == null) {
-			Class superClass= fType.getSuperclass();
-			if (superClass != null) {
-				fExtends= manager.get(superClass);
-			} else {
-				fExtends= END_POINT;
-			}
-		}
-		result= fExtends.findTypeExtender(manager, namespace, method, staticMethod);
-		if (result != CONTINUE)
-			return result;
-		
-		// handle implements chain
-		if (fImplements == null) {
-			Class[] interfaces= fType.getInterfaces();
-			if (interfaces.length == 0) {
-				fImplements= EMPTY_TYPE_EXTENSION_ARRAY;
-			} else {
-				fImplements= new TypeExtension[interfaces.length];
-				for (int i= 0; i < interfaces.length; i++) {
-					fImplements[i]= manager.get(interfaces[i]);
-				}				
-			}
-		}
-		for (int i= 0; i < fImplements.length; i++) {
-			result= fImplements[i].findTypeExtender(manager, namespace, method, staticMethod);
-			if (result != CONTINUE)
-				return result;
-		}
-		return CONTINUE;
-	}
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/TypeExtensionManager.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/TypeExtensionManager.java
deleted file mode 100644
index 0c839e8..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/TypeExtensionManager.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionDelta;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.IRegistryChangeEvent;
-import org.eclipse.core.runtime.IRegistryChangeListener;
-import org.eclipse.core.runtime.Platform;
-
-import org.eclipse.core.expressions.IPropertyTester;
-
-public class TypeExtensionManager implements IRegistryChangeListener {
-	
-	private String fExtensionPoint; 
-	
-	private static final String TYPE= "type"; //$NON-NLS-1$
-	
-	private static final IPropertyTester[] EMPTY_PROPERTY_TESTER_ARRAY= new IPropertyTester[0];
-	
-	private static final IPropertyTester NULL_PROPERTY_TESTER= new IPropertyTester() {
-		public boolean handles(String namespace, String property) {
-			return false;
-		}
-		public boolean isInstantiated() {
-			return true;
-		}
-		public boolean isDeclaringPluginActive() {
-			return true;
-		}
-		public IPropertyTester instantiate() throws CoreException {
-			return this;
-		}
-		public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
-			return false;
-		}
-	};
-	
-	/*
-	 * Map containing all already created type extension object. 
-	 */
-	private Map/*<Class, TypeExtension>*/ fTypeExtensionMap;
-	
-	/*
-	 * Table containing mapping of class name to configuration element 
-	 */
-	private Map/*<String, List<IConfigurationElement>>*/ fConfigurationElementMap;
-	
-	/*
-	 * A cache to give fast access to the last 1000 method invocations.
-	 */
-	private PropertyCache fPropertyCache;
-	
-	
-	public TypeExtensionManager(String extensionPoint) {
-		Assert.isNotNull(extensionPoint);
-		fExtensionPoint= extensionPoint;
-		Platform.getExtensionRegistry().addRegistryChangeListener(this);
-		initializeCaches();
-	}
-
-	public synchronized Property getProperty(Object receiver, String namespace, String method) throws CoreException  {
-		long start= 0;
-		if (Expressions.TRACING)
-			start= System.currentTimeMillis();
-		
-		// if we call a static method than the receiver is the class object
-		Class clazz= receiver instanceof Class ? (Class)receiver : receiver.getClass();
-		Property result= new Property(clazz, namespace, method);
-		Property cached= fPropertyCache.get(result);
-		if (cached != null) {
-			if (cached.isValidCacheEntry()) {
-				if (Expressions.TRACING) {
-					System.out.println("[Type Extension] - method " + //$NON-NLS-1$
-						clazz.getName() + "#" + method + //$NON-NLS-1$
-						" found in cache: " +  //$NON-NLS-1$
-						(System.currentTimeMillis() - start) + " ms."); //$NON-NLS-1$
-				}
-				return cached;
-			}
-			// The type extender isn't loaded in the cached method but can be loaded
-			// now. So remove method from cache and do the normal look up so that the
-			// implementation class gets loaded.
-			fPropertyCache.remove(cached);
-		}
-		TypeExtension extension= get(clazz);
-		IPropertyTester extender= extension.findTypeExtender(this, namespace, method, receiver instanceof Class);
-		if (extender == TypeExtension.CONTINUE || extender == null) {
-			throw new CoreException(new ExpressionStatus(
-				ExpressionStatus.TYPE_EXTENDER_UNKOWN_METHOD,
-				Messages.format(
-					ExpressionMessages.TypeExtender_unknownMethod,  
-					new Object[] {method, clazz.toString()})));
-		}
-		result.setPropertyTester(extender);
-		fPropertyCache.put(result);
-		if (Expressions.TRACING) {
-			System.out.println("[Type Extension] - method " + //$NON-NLS-1$
-				clazz.getName() + "#" + method + //$NON-NLS-1$
-				" not found in cache: " +  //$NON-NLS-1$
-				(System.currentTimeMillis() - start) + " ms."); //$NON-NLS-1$
-		}
-		return result;
-	}
-	
-	/*
-	 * This method doesn't need to be synchronized since it is called
-	 * from withing the getProperty method which is synchronized
-	 */
-	/* package */ TypeExtension get(Class clazz) {
-		TypeExtension result= (TypeExtension)fTypeExtensionMap.get(clazz);
-		if (result == null) {
-			result= new TypeExtension(clazz);
-			fTypeExtensionMap.put(clazz, result);
-		}
-		return result;
-	}
-	
-	/*
-	 * This method doesn't need to be synchronized since it is called
-	 * from withing the getProperty method which is synchronized
-	 */
-	/* package */ IPropertyTester[] loadTesters(Class type) {
-		if (fConfigurationElementMap == null) {
-			fConfigurationElementMap= new HashMap();
-			IExtensionRegistry registry= Platform.getExtensionRegistry();
-			IConfigurationElement[] ces= registry.getConfigurationElementsFor(
-				ExpressionPlugin.getPluginId(), 
-				fExtensionPoint); 
-			for (int i= 0; i < ces.length; i++) {
-				IConfigurationElement config= ces[i];
-				String typeAttr= config.getAttribute(TYPE);
-				List typeConfigs= (List)fConfigurationElementMap.get(typeAttr);
-				if (typeConfigs == null) {
-					typeConfigs= new ArrayList();
-					fConfigurationElementMap.put(typeAttr, typeConfigs);
-				}
-				typeConfigs.add(config);
-			}
-		}
-		String typeName= type.getName();
-		List typeConfigs= (List)fConfigurationElementMap.get(typeName);
-		if (typeConfigs == null)
-			return EMPTY_PROPERTY_TESTER_ARRAY;
-		else {
-			IPropertyTester[] result= new IPropertyTester[typeConfigs.size()];
-			for (int i= 0; i < result.length; i++) {
-				IConfigurationElement config= (IConfigurationElement)typeConfigs.get(i);
-				try {
-					result[i]= new PropertyTesterDescriptor(config);
-				} catch (CoreException e) {
-					ExpressionPlugin.getDefault().getLog().log(e.getStatus());
-					result[i]= NULL_PROPERTY_TESTER;
-				}
-			}
-			fConfigurationElementMap.remove(typeName);
-			return result;
-		}
-	}
-	
-	public void registryChanged(IRegistryChangeEvent event) {
-		IExtensionDelta[] deltas= event.getExtensionDeltas(ExpressionPlugin.getPluginId(), fExtensionPoint);
-		if (deltas.length > 0) {
-			initializeCaches();
-		}
-	}
-	
-	private synchronized void initializeCaches() {
-		fTypeExtensionMap= new HashMap();
-		fConfigurationElementMap= null;
-		fPropertyCache= new PropertyCache(1000);
-	}
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/WithExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/WithExpression.java
deleted file mode 100644
index 61e0a82..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/WithExpression.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-
-import org.eclipse.core.expressions.EvaluationContext;
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.expressions.ExpressionInfo;
-
-public class WithExpression extends CompositeExpression {
-
-	private String fVariable;
-	private static final String ATT_VARIABLE= "variable";  //$NON-NLS-1$
-	
-	public WithExpression(IConfigurationElement configElement) throws CoreException {
-		fVariable= configElement.getAttribute(ATT_VARIABLE);
-		Expressions.checkAttribute(ATT_VARIABLE, fVariable);
-	}
-	
-	public WithExpression(String variable) {
-		fVariable= variable;
-	}
-
-	public EvaluationResult evaluate(IEvaluationContext context) throws CoreException {
-		Object variable= context.getVariable(fVariable);
-		if (variable == null) {
-			throw new CoreException(new ExpressionStatus(
-				ExpressionStatus.VARIABLE_NOT_DEFINED,
-				Messages.format(ExpressionMessages.WithExpression_variable_not_defined, fVariable))); 
-		}
-		return evaluateAnd(new EvaluationContext(context, variable));
-	}
-
-	public void collectExpressionInfo(ExpressionInfo info) {
-		ExpressionInfo other= new ExpressionInfo();
-		super.collectExpressionInfo(other);
-		if (other.hasDefaultVariableAccess()) {
-			info.addVariableNameAccess(fVariable);
-		}
-		info.mergeExceptDefaultVariable(other);
-	}	
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.jobs/.classpath b/bundles/org.eclipse.core.jobs/.classpath
deleted file mode 100644
index 751c8f2..0000000
--- a/bundles/org.eclipse.core.jobs/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/bundles/org.eclipse.core.jobs/.cvsignore b/bundles/org.eclipse.core.jobs/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/bundles/org.eclipse.core.jobs/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/bundles/org.eclipse.core.jobs/.options b/bundles/org.eclipse.core.jobs/.options
deleted file mode 100644
index 994faa5..0000000
--- a/bundles/org.eclipse.core.jobs/.options
+++ /dev/null
@@ -1,19 +0,0 @@
-# Debugging options for the org.eclipse.core.runtime plugin
-
-# NOTE: There is a deadlock risk when using these debug flags in a workspace
-# launched from Eclipse due to interaction with a lock in the debugger console.  
-# For details: https://bugs.eclipse.org/bugs/show_bug.cgi?id=93968
-
-# Prints debug information on running background jobs
-org.eclipse.core.jobs/jobs=false
-# Includes current date and time in job debug information
-org.eclipse.core.jobs/jobs/timing=false
-# Computes location of error on mismatched IJobManager.beginRule/endRule
-org.eclipse.core.jobs/jobs/beginend=false
-# Pedantic assertion checking on locks and deadlock reporting
-org.eclipse.core.jobs/jobs/locks=false
-# Throws an IllegalStateException when deadlock occurs
-org.eclipse.core.jobs/jobs/errorondeadlock=false
-# Debug shutdown behaviour
-org.eclipse.core.jobs/jobs/shutdown=false
-
diff --git a/bundles/org.eclipse.core.jobs/.project b/bundles/org.eclipse.core.jobs/.project
deleted file mode 100644
index 06b10a8..0000000
--- a/bundles/org.eclipse.core.jobs/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.core.jobs</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.core.jobs/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.core.jobs/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 772aee9..0000000
--- a/bundles/org.eclipse.core.jobs/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,14 +0,0 @@
-#Wed Feb 01 11:53:31 EST 2006
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
diff --git a/bundles/org.eclipse.core.jobs/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.core.jobs/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 671fd9c..0000000
--- a/bundles/org.eclipse.core.jobs/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,6 +0,0 @@
-#Fri Jan 06 16:47:44 EST 2006
-eclipse.preferences.version=1
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=;
-org.eclipse.jdt.ui.ondemandthreshold=3
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return Returns the ${bare_field_name}.\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} The ${bare_field_name} to set.\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\r\n * Copyright (c) ${year} IBM Corporation and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n *\r\n * Contributors\:\r\n *     IBM Corporation - initial API and implementation\r\n ******************************************************************************/\r\n</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @since 3.2\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="New classes and interfaces" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\r\n * Copyright (c) ${year} IBM Corporation and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n * \r\n * Contributors\:\r\n *     IBM Corporation - initial API and implementation\r\n *******************************************************************************/\r\n${filecomment}\r\n${package_declaration}\r\n\r\n/**\r\n * \r\n */\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block&\#13;\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
diff --git a/bundles/org.eclipse.core.jobs/META-INF/MANIFEST.MF b/bundles/org.eclipse.core.jobs/META-INF/MANIFEST.MF
deleted file mode 100644
index f10bb3e..0000000
--- a/bundles/org.eclipse.core.jobs/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,14 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.core.jobs; singleton:=true
-Bundle-Version: 3.2.0.qualifier
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Export-Package: org.eclipse.core.internal.jobs;x-internal:=true,
- org.eclipse.core.runtime.jobs
-Bundle-Activator: org.eclipse.core.internal.jobs.JobActivator
-Require-Bundle: org.eclipse.equinox.common,
- system.bundle;resolution:=optional
-Bundle-RequiredExecutionEnvironment: CDC-1.0/Foundation-1.0,
- J2SE-1.3
diff --git a/bundles/org.eclipse.core.jobs/about.html b/bundles/org.eclipse.core.jobs/about.html
deleted file mode 100644
index cdc1e50..0000000
--- a/bundles/org.eclipse.core.jobs/about.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<title>About</title>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>September 26, 2005</p> 
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html" target="_blank">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
-
-<small>Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.</small>
-
-</body>
-</html>
diff --git a/bundles/org.eclipse.core.jobs/build.properties b/bundles/org.eclipse.core.jobs/build.properties
deleted file mode 100644
index 730faf8..0000000
--- a/bundles/org.eclipse.core.jobs/build.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-###############################################################################
-# Copyright (c) 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               plugin.properties,\
-               .options,\
-               about.html
-src.includes = about.html
diff --git a/bundles/org.eclipse.core.jobs/plugin.properties b/bundles/org.eclipse.core.jobs/plugin.properties
deleted file mode 100644
index 7db1f71..0000000
--- a/bundles/org.eclipse.core.jobs/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-pluginName = Eclipse Jobs Mechanism
-providerName = Eclipse.org
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Deadlock.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Deadlock.java
deleted file mode 100644
index 775a695..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Deadlock.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.jobs;
-
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-
-/**
- * The deadlock class stores information about a deadlock that just occurred.
- * It contains an array of the threads that were involved in the deadlock
- * as well as the thread that was chosen to be suspended and an array of locks
- * held by that thread that are going to be suspended to resolve the deadlock.
- */
-class Deadlock {
-	//all the threads which are involved in the deadlock
-	private Thread[] threads;
-	//the thread whose locks will be suspended to resolve deadlock
-	private Thread candidate;
-	//the locks that will be suspended
-	private ISchedulingRule[] locks;
-
-	public Deadlock(Thread[] threads, ISchedulingRule[] locks, Thread candidate) {
-		this.threads = threads;
-		this.locks = locks;
-		this.candidate = candidate;
-	}
-
-	public ISchedulingRule[] getLocks() {
-		return locks;
-	}
-
-	public Thread getCandidate() {
-		return candidate;
-	}
-
-	public Thread[] getThreads() {
-		return threads;
-	}
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/DeadlockDetector.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/DeadlockDetector.java
deleted file mode 100644
index 889b7e8..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/DeadlockDetector.java
+++ /dev/null
@@ -1,695 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.jobs;
-
-import java.util.ArrayList;
-import org.eclipse.core.internal.runtime.RuntimeLog;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.jobs.ILock;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-
-/**
- * Stores all the relationships between locks (rules are also considered locks), 
- * and the threads that own them. All the relationships are stored in a 2D integer array.
- * The rows in the array are threads, while the columns are locks.
- * Two corresponding arrayLists store the actual threads and locks.
- * The index of a thread in the first arrayList is the index of the row in the graph.
- * The index of a lock in the second arrayList is the index of the column in the graph. 
- * An entry greater than 0 in the graph is the number of times a thread in the entry's row
- * acquired the lock in the entry's column.
- * An entry of -1 means that the thread is waiting to acquire the lock.
- * An entry of 0 means that the thread and the lock have no relationship.
- * 
- * The difference between rules and locks is that locks can be suspended, while
- * rules are implicit locks and as such cannot be suspended.
- * To resolve deadlock, the graph will first try to find a thread that only owns
- * locks. Failing that, it will find a thread in the deadlock that owns at least
- * one lock and suspend it.
- * 
- * Deadlock can only occur among locks, or among locks in combination with rules.
- * Deadlock among rules only is impossible. Therefore, in any deadlock one can always
- * find a thread that owns at least one lock that can be suspended.
- * 
- * The implementation of the graph assumes that a thread can only own 1 rule at
- * any one time. It can acquire that rule several times, but a thread cannot
- * acquire 2 non-conflicting rules at the same time.
- * 
- * The implementation of the graph will sometimes also find and resolve bogus deadlocks.
- * 		graph:				assuming this rule hierarchy:
- * 		   R2 R3 L1						R1
- * 		J1  1  0  0					   /  \
- * 		J2  0  1 -1					  R2  R3
- * 		J3 -1  0  1
- * 		 
- * If in the above situation job4 decides to acquire rule1, then the graph will transform
- * to the following:
- * 		   R2 R3 R1 L1
- * 		J1  1  0  1  0
- * 		J2  1  1  1 -1
- * 		J3 -1  0  0  1
- * 		J4  0  0 -1  0
- * 
- * and the graph will assume that job2 and job3 are deadlocked and suspend lock1 of job3.
- * The reason the deadlock is bogus is that the deadlock is unlikely to actually happen (the threads
- * are currently not deadlocked, but might deadlock later on when it is too late to detect it)
- * Therefore, in order to make sure that no deadlock is possible, 
- * the deadlock will still be resolved at this point.
- */
-class DeadlockDetector {
-	private static int NO_STATE = 0;
-	//state variables in the graph
-	private static int WAITING_FOR_LOCK = -1;
-	//empty matrix
-	private static final int[][] EMPTY_MATRIX = new int[0][0];
-	//matrix of relationships between threads and locks
-	private int[][] graph = EMPTY_MATRIX;
-	//index is column in adjacency matrix for the lock
-	private final ArrayList locks = new ArrayList();
-	//index is row in adjacency matrix for the thread
-	private final ArrayList lockThreads = new ArrayList();
-	//whether the graph needs to be resized
-	private boolean resize = false;
-
-	/**
-	 * Recursively check if any of the threads that prevent the current thread from running
-	 * are actually deadlocked with the current thread.
-	 * Add the threads that form deadlock to the deadlockedThreads list.
-	 */
-	private boolean addCycleThreads(ArrayList deadlockedThreads, Thread next) {
-		//get the thread that block the given thread from running
-		Thread[] blocking = blockingThreads(next);
-		//if the thread is not blocked by other threads, then it is not part of a deadlock
-		if (blocking.length == 0)
-			return false;
-		boolean inCycle = false;
-		for (int i = 0; i < blocking.length; i++) {
-			//if we have already visited the given thread, then we found a cycle
-			if (deadlockedThreads.contains(blocking[i])) {
-				inCycle = true;
-			} else {
-				//otherwise, add the thread to our list and recurse deeper
-				deadlockedThreads.add(blocking[i]);
-				//if the thread is not part of a cycle, remove it from the list
-				if (addCycleThreads(deadlockedThreads, blocking[i]))
-					inCycle = true;
-				else
-					deadlockedThreads.remove(blocking[i]);
-			}
-		}
-		return inCycle;
-	}
-
-	/**
-	 * Get the thread(s) that own the lock this thread is waiting for.
-	 */
-	private Thread[] blockingThreads(Thread current) {
-		//find the lock this thread is waiting for
-		ISchedulingRule lock = (ISchedulingRule) getWaitingLock(current);
-		return getThreadsOwningLock(lock);
-	}
-
-	/**
-	 * Check that the addition of a waiting thread did not produce deadlock. 
-	 * If deadlock is detected return true, else return false.
-	 */
-	private boolean checkWaitCycles(int[] waitingThreads, int lockIndex) {
-		/**
-		 * find the lock that this thread is waiting for
-		 * recursively check if this is a cycle (i.e. a thread waiting on itself)
-		 */
-		for (int i = 0; i < graph.length; i++) {
-			if (graph[i][lockIndex] > NO_STATE) {
-				if (waitingThreads[i] > NO_STATE) {
-					return true;
-				}
-				//keep track that we already visited this thread
-				waitingThreads[i]++;
-				for (int j = 0; j < graph[i].length; j++) {
-					if (graph[i][j] == WAITING_FOR_LOCK) {
-						if (checkWaitCycles(waitingThreads, j))
-							return true;
-					}
-				}
-				//this thread is not involved in a cycle yet, so remove the visited flag
-				waitingThreads[i]--;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Returns true IFF the matrix contains a row for the given thread.
-	 * (meaning the given thread either owns locks or is waiting for locks)
-	 */
-	boolean contains(Thread t) {
-		return lockThreads.contains(t);
-	}
-
-	/**
-	 * A new rule was just added to the graph.
-	 * Find a rule it conflicts with and update the new rule with the number of times 
-	 * it was acquired implicitly when threads acquired conflicting rule.
-	 */
-	private void fillPresentEntries(ISchedulingRule newLock, int lockIndex) {
-		//fill in the entries for the new rule from rules it conflicts with
-		for (int j = 0; j < locks.size(); j++) {
-			if ((j != lockIndex) && (newLock.isConflicting((ISchedulingRule) locks.get(j)))) {
-				for (int i = 0; i < graph.length; i++) {
-					if ((graph[i][j] > NO_STATE) && (graph[i][lockIndex] == NO_STATE))
-						graph[i][lockIndex] = graph[i][j];
-				}
-			}
-		}
-		//now back fill the entries for rules the current rule conflicts with
-		for (int j = 0; j < locks.size(); j++) {
-			if ((j != lockIndex) && (newLock.isConflicting((ISchedulingRule) locks.get(j)))) {
-				for (int i = 0; i < graph.length; i++) {
-					if ((graph[i][lockIndex] > NO_STATE) && (graph[i][j] == NO_STATE))
-						graph[i][j] = graph[i][lockIndex];
-				}
-			}
-		}
-	}
-
-	/**
-	 * Returns all the locks owned by the given thread
-	 */
-	private Object[] getOwnedLocks(Thread current) {
-		ArrayList ownedLocks = new ArrayList(1);
-		int index = indexOf(current, false);
-
-		for (int j = 0; j < graph[index].length; j++) {
-			if (graph[index][j] > NO_STATE)
-				ownedLocks.add(locks.get(j));
-		}
-		if (ownedLocks.size() == 0)
-			Assert.isLegal(false, "A thread with no locks is part of a deadlock."); //$NON-NLS-1$
-		return ownedLocks.toArray();
-	}
-
-	/**
-	 * Returns an array of threads that form the deadlock (usually 2).
-	 */
-	private Thread[] getThreadsInDeadlock(Thread cause) {
-		ArrayList deadlockedThreads = new ArrayList(2);
-		/**
-		 * if the thread that caused deadlock doesn't own any locks, then it is not part
-		 * of the deadlock (it just caused it because of a rule it tried to acquire)
-		 */
-		if (ownsLocks(cause))
-			deadlockedThreads.add(cause);
-		addCycleThreads(deadlockedThreads, cause);
-		return (Thread[]) deadlockedThreads.toArray(new Thread[deadlockedThreads.size()]);
-	}
-
-	/**
-	 * Returns the thread(s) that own the given lock.
-	 */
-	private Thread[] getThreadsOwningLock(ISchedulingRule rule) {
-		if (rule == null)
-			return new Thread[0];
-		int lockIndex = indexOf(rule, false);
-		ArrayList blocking = new ArrayList(1);
-		for (int i = 0; i < graph.length; i++) {
-			if (graph[i][lockIndex] > NO_STATE)
-				blocking.add(lockThreads.get(i));
-		}
-		if ((blocking.size() == 0) && (JobManager.DEBUG_LOCKS))
-			System.out.println("Lock " + rule + " is involved in deadlock but is not owned by any thread."); //$NON-NLS-1$ //$NON-NLS-2$
-		if ((blocking.size() > 1) && (rule instanceof ILock) && (JobManager.DEBUG_LOCKS))
-			System.out.println("Lock " + rule + " is owned by more than 1 thread, but it is not a rule."); //$NON-NLS-1$ //$NON-NLS-2$
-		return (Thread[]) blocking.toArray(new Thread[blocking.size()]);
-	}
-
-	/**
-	 * Returns the lock the given thread is waiting for.
-	 */
-	private Object getWaitingLock(Thread current) {
-		int index = indexOf(current, false);
-		//find the lock that this thread is waiting for
-		for (int j = 0; j < graph[index].length; j++) {
-			if (graph[index][j] == WAITING_FOR_LOCK)
-				return locks.get(j);
-		}
-		//it can happen that a thread is not waiting for any lock (it is not really part of the deadlock)
-		return null;
-	}
-
-	/**
-	 * Returns the index of the given lock in the lock array. If the lock is
-	 * not present in the array, it is added to the end.
-	 */
-	private int indexOf(ISchedulingRule lock, boolean add) {
-		int index = locks.indexOf(lock);
-		if ((index < 0) && add) {
-			locks.add(lock);
-			resize = true;
-			index = locks.size() - 1;
-		}
-		return index;
-	}
-
-	/**
-	 * Returns the index of the given thread in the thread array. If the thread
-	 * is not present in the array, it is added to the end.
-	 */
-	private int indexOf(Thread owner, boolean add) {
-		int index = lockThreads.indexOf(owner);
-		if ((index < 0) && add) {
-			lockThreads.add(owner);
-			resize = true;
-			index = lockThreads.size() - 1;
-		}
-		return index;
-	}
-
-	/**
-	 * Returns true IFF the adjacency matrix is empty.
-	 */
-	boolean isEmpty() {
-		return (locks.size() == 0) && (lockThreads.size() == 0) && (graph.length == 0);
-	}
-
-	/**
-	 * The given lock was acquired by the given thread.
-	 */
-	void lockAcquired(Thread owner, ISchedulingRule lock) {
-		int lockIndex = indexOf(lock, true);
-		int threadIndex = indexOf(owner, true);
-		if (resize)
-			resizeGraph();
-		if (graph[threadIndex][lockIndex] == WAITING_FOR_LOCK)
-			graph[threadIndex][lockIndex] = NO_STATE;
-		/**
-		 * acquire all locks that conflict with the given lock
-		 * or conflict with a lock the given lock will acquire implicitly
-		 * (locks are acquired implicitly when a conflicting lock is acquired)
-		 */
-		ArrayList conflicting = new ArrayList(1);
-		//only need two passes through all the locks to pick up all conflicting rules
-		int NUM_PASSES = 2;
-		conflicting.add(lock);
-		graph[threadIndex][lockIndex]++;
-		for (int i = 0; i < NUM_PASSES; i++) {
-			for (int k = 0; k < conflicting.size(); k++) {
-				ISchedulingRule current = (ISchedulingRule) conflicting.get(k);
-				for (int j = 0; j < locks.size(); j++) {
-					ISchedulingRule possible = (ISchedulingRule) locks.get(j);
-					if (current.isConflicting(possible) && !conflicting.contains(possible)) {
-						conflicting.add(possible);
-						graph[threadIndex][j]++;
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * The given lock was released by the given thread. Update the graph.
-	 */
-	void lockReleased(Thread owner, ISchedulingRule lock) {
-		int lockIndex = indexOf(lock, false);
-		int threadIndex = indexOf(owner, false);
-		//make sure the lock and thread exist in the graph
-		if (threadIndex < 0) {
-			if (JobManager.DEBUG_LOCKS)
-				System.out.println("[lockReleased] Lock " + lock + " was already released by thread " + owner.getName()); //$NON-NLS-1$ //$NON-NLS-2$
-			return;
-		}
-		if (lockIndex < 0) {
-			if (JobManager.DEBUG_LOCKS)
-				System.out.println("[lockReleased] Thread " + owner.getName() + " already released lock " + lock); //$NON-NLS-1$ //$NON-NLS-2$
-			return;
-		}
-		//if this lock was suspended, set it to NO_STATE
-		if ((lock instanceof ILock) && (graph[threadIndex][lockIndex] == WAITING_FOR_LOCK)) {
-			graph[threadIndex][lockIndex] = NO_STATE;
-			return;
-		}
-		//release all locks that conflict with the given lock
-		//or release all rules that are owned by the given thread, if we are releasing a rule
-		for (int j = 0; j < graph[threadIndex].length; j++) {
-			if ((lock.isConflicting((ISchedulingRule) locks.get(j))) || (!(lock instanceof ILock) && !(locks.get(j) instanceof ILock) && (graph[threadIndex][j] > NO_STATE))) {
-				if (graph[threadIndex][j] == NO_STATE) {
-					if (JobManager.DEBUG_LOCKS)
-						System.out.println("[lockReleased] More releases than acquires for thread " + owner.getName() + " and lock " + lock); //$NON-NLS-1$ //$NON-NLS-2$
-				} else {
-					graph[threadIndex][j]--;
-				}
-			}
-		}
-		//if this thread just released the given lock, try to simplify the graph
-		if (graph[threadIndex][lockIndex] == NO_STATE)
-			reduceGraph(threadIndex, lock);
-	}
-
-	/**
-	 * The given scheduling rule is no longer used because the job that invoked it is done.
-	 * Release this rule regardless of how many times it was acquired.
-	 */
-	void lockReleasedCompletely(Thread owner, ISchedulingRule rule) {
-		int ruleIndex = indexOf(rule, false);
-		int threadIndex = indexOf(owner, false);
-		//need to make sure that the given thread and rule were not already removed from the graph
-		if (threadIndex < 0) {
-			if (JobManager.DEBUG_LOCKS)
-				System.out.println("[lockReleasedCompletely] Lock " + rule + " was already released by thread " + owner.getName()); //$NON-NLS-1$ //$NON-NLS-2$
-			return;
-		}
-		if (ruleIndex < 0) {
-			if (JobManager.DEBUG_LOCKS)
-				System.out.println("[lockReleasedCompletely] Thread " + owner.getName() + " already released lock " + rule); //$NON-NLS-1$ //$NON-NLS-2$
-			return;
-		}
-		/**
-		 * set all rules that are owned by the given thread to NO_STATE 
-		 * (not just rules that conflict with the rule we are releasing)
-		 * if we are releasing a lock, then only update the one entry for the lock
-		 */
-		for (int j = 0; j < graph[threadIndex].length; j++) {
-			if (!(locks.get(j) instanceof ILock) && (graph[threadIndex][j] > NO_STATE))
-				graph[threadIndex][j] = NO_STATE;
-		}
-		reduceGraph(threadIndex, rule);
-	}
-
-	/**
-	 * The given thread could not get the given lock and is waiting for it.
-	 * Update the graph.
-	 */
-	Deadlock lockWaitStart(Thread client, ISchedulingRule lock) {
-		setToWait(client, lock, false);
-		int lockIndex = indexOf(lock, false);
-		int[] temp = new int[lockThreads.size()];
-		//check if the addition of the waiting thread caused deadlock
-		if (!checkWaitCycles(temp, lockIndex))
-			return null;
-		//there is a deadlock in the graph
-		Thread[] threads = getThreadsInDeadlock(client);
-		Thread candidate = resolutionCandidate(threads);
-		ISchedulingRule[] locksToSuspend = realLocksForThread(candidate);
-		Deadlock deadlock = new Deadlock(threads, locksToSuspend, candidate);
-		//find a thread whose locks can be suspended to resolve the deadlock
-		if (JobManager.DEBUG_LOCKS)
-			reportDeadlock(deadlock);
-		if (JobManager.DEBUG_DEADLOCK)
-			throw new IllegalStateException("Deadlock detected. Caused by thread " + client.getName() + '.'); //$NON-NLS-1$
-		// Update the graph to indicate that the locks will now be suspended.
-		// To indicate that the lock will be suspended, we set the thread to wait for the lock.
-		// When the lock is forced to be released, the entry will be cleared.
-		for (int i = 0; i < locksToSuspend.length; i++)
-			setToWait(deadlock.getCandidate(), locksToSuspend[i], true);
-		return deadlock;
-	}
-
-	/**
-	 * The given thread has stopped waiting for the given lock. 
-	 * Update the graph.
-	 */
-	void lockWaitStop(Thread owner, ISchedulingRule lock) {
-		int lockIndex = indexOf(lock, false);
-		int threadIndex = indexOf(owner, false);
-		//make sure the thread and lock exist in the graph
-		if (threadIndex < 0) {
-			if (JobManager.DEBUG_LOCKS)
-				System.out.println("Thread " + owner.getName() + " was already removed."); //$NON-NLS-1$ //$NON-NLS-2$
-			return;
-		}
-		if (lockIndex < 0) {
-			if (JobManager.DEBUG_LOCKS)
-				System.out.println("Lock " + lock + " was already removed."); //$NON-NLS-1$ //$NON-NLS-2$
-			return;
-		}
-		if (graph[threadIndex][lockIndex] != WAITING_FOR_LOCK)
-			Assert.isTrue(false, "Thread " + owner.getName() + " was not waiting for lock " + lock.toString() + " so it could not time out."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		graph[threadIndex][lockIndex] = NO_STATE;
-		reduceGraph(threadIndex, lock);
-	}
-
-	/**
-	 * Returns true IFF the given thread owns a single lock
-	 */
-	private boolean ownsLocks(Thread cause) {
-		int threadIndex = indexOf(cause, false);
-		for (int j = 0; j < graph[threadIndex].length; j++) {
-			if (graph[threadIndex][j] > NO_STATE)
-				return true;
-		}
-		return false;
-	}
-
-	/**
-	 * Returns true IFF the given thread owns a single real lock.
-	 * A real lock is a lock that can be suspended.
-	 */
-	private boolean ownsRealLocks(Thread owner) {
-		int threadIndex = indexOf(owner, false);
-		for (int j = 0; j < graph[threadIndex].length; j++) {
-			if (graph[threadIndex][j] > NO_STATE) {
-				Object lock = locks.get(j);
-				if (lock instanceof ILock)
-					return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Return true IFF this thread owns rule locks (i.e. implicit locks which
-	 * cannot be suspended)
-	 */
-	private boolean ownsRuleLocks(Thread owner) {
-		int threadIndex = indexOf(owner, false);
-		for (int j = 0; j < graph[threadIndex].length; j++) {
-			if (graph[threadIndex][j] > NO_STATE) {
-				Object lock = locks.get(j);
-				if (!(lock instanceof ILock))
-					return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Returns an array of real locks that are owned by the given thread.
-	 * Real locks are locks that implement the ILock interface and can be suspended.
-	 */
-	private ISchedulingRule[] realLocksForThread(Thread owner) {
-		int threadIndex = indexOf(owner, false);
-		ArrayList ownedLocks = new ArrayList(1);
-		for (int j = 0; j < graph[threadIndex].length; j++) {
-			if ((graph[threadIndex][j] > NO_STATE) && (locks.get(j) instanceof ILock))
-				ownedLocks.add(locks.get(j));
-		}
-		if (ownedLocks.size() == 0)
-			Assert.isLegal(false, "A thread with no real locks was chosen to resolve deadlock."); //$NON-NLS-1$
-		return (ISchedulingRule[]) ownedLocks.toArray(new ISchedulingRule[ownedLocks.size()]);
-	}
-
-	/**
-	 * The matrix has been simplified. Check if any unnecessary rows or columns
-	 * can be removed.
-	 */
-	private void reduceGraph(int row, ISchedulingRule lock) {
-		int numLocks = locks.size();
-		boolean[] emptyColumns = new boolean[numLocks];
-
-		/**
-		 * find all columns that could possibly be empty
-		 * (consist of locks which conflict with the given lock, or of locks which are rules)
-		 */
-		for (int j = 0; j < numLocks; j++) {
-			if ((lock.isConflicting((ISchedulingRule) locks.get(j))) || !(locks.get(j) instanceof ILock))
-				emptyColumns[j] = true;
-		}
-
-		boolean rowEmpty = true;
-		int numEmpty = 0;
-		//check if the given row is empty
-		for (int j = 0; j < graph[row].length; j++) {
-			if (graph[row][j] != NO_STATE) {
-				rowEmpty = false;
-				break;
-			}
-		}
-		/**
-		 * Check if the possibly empty columns are actually empty.
-		 * If a column is actually empty, remove the corresponding lock from the list of locks
-		 * Start at the last column so that when locks are removed from the list, 
-		 * the index of the remaining locks is unchanged. Store the number of empty columns.
-		 */
-		for (int j = emptyColumns.length - 1; j >= 0; j--) {
-			for (int i = 0; i < graph.length; i++) {
-				if (emptyColumns[j] && (graph[i][j] != NO_STATE)) {
-					emptyColumns[j] = false;
-					break;
-				}
-			}
-			if (emptyColumns[j]) {
-				locks.remove(j);
-				numEmpty++;
-			}
-		}
-		//if no columns or rows are empty, return right away
-		if ((numEmpty == 0) && (!rowEmpty))
-			return;
-
-		if (rowEmpty)
-			lockThreads.remove(row);
-
-		//new graph (the list of locks and the list of threads are already updated)
-		final int numThreads = lockThreads.size();
-		numLocks = locks.size();
-		//optimize empty graph case
-		if (numThreads == 0 && numLocks == 0) {
-			graph = EMPTY_MATRIX;
-			return;
-		}
-		int[][] tempGraph = new int[numThreads][numLocks];
-
-		//the number of rows we need to skip to get the correct entry from the old graph
-		int numRowsSkipped = 0;
-		for (int i = 0; i < graph.length - numRowsSkipped; i++) {
-			if ((i == row) && rowEmpty) {
-				numRowsSkipped++;
-				//check if we need to skip the last row
-				if (i >= graph.length - numRowsSkipped)
-					break;
-			}
-			//the number of columns we need to skip to get the correct entry from the old graph
-			//needs to be reset for every new row
-			int numColsSkipped = 0;
-			for (int j = 0; j < graph[i].length - numColsSkipped; j++) {
-				while (emptyColumns[j + numColsSkipped]) {
-					numColsSkipped++;
-					//check if we need to skip the last column
-					if (j >= graph[i].length - numColsSkipped)
-						break;
-				}
-				//need to break out of the outer loop
-				if (j >= graph[i].length - numColsSkipped)
-					break;
-				tempGraph[i][j] = graph[i + numRowsSkipped][j + numColsSkipped];
-			}
-		}
-		graph = tempGraph;
-		Assert.isTrue(numThreads == graph.length, "Rows and threads don't match."); //$NON-NLS-1$
-		Assert.isTrue(numLocks == ((graph.length > 0) ? graph[0].length : 0), "Columns and locks don't match."); //$NON-NLS-1$
-	}
-
-	/**
-	 * Adds a 'deadlock detected' message to the log with a stack trace.
-	 */
-	private void reportDeadlock(Deadlock deadlock) {
-		String msg = "Deadlock detected. All locks owned by thread " + deadlock.getCandidate().getName() + " will be suspended."; //$NON-NLS-1$ //$NON-NLS-2$
-		MultiStatus main = new MultiStatus(JobManager.PI_JOBS, JobManager.PLUGIN_ERROR, msg, new IllegalStateException());
-		Thread[] threads = deadlock.getThreads();
-		for (int i = 0; i < threads.length; i++) {
-			Object[] ownedLocks = getOwnedLocks(threads[i]);
-			Object waitLock = getWaitingLock(threads[i]);
-			StringBuffer buf = new StringBuffer("Thread "); //$NON-NLS-1$
-			buf.append(threads[i].getName());
-			buf.append(" has locks: "); //$NON-NLS-1$
-			for (int j = 0; j < ownedLocks.length; j++) {
-				buf.append(ownedLocks[j]);
-				buf.append((j < ownedLocks.length - 1) ? ", " : " "); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-			buf.append("and is waiting for lock "); //$NON-NLS-1$
-			buf.append(waitLock);
-			Status child = new Status(IStatus.ERROR, JobManager.PI_JOBS, JobManager.PLUGIN_ERROR, buf.toString(), null);
-			main.add(child);
-		}
-		RuntimeLog.log(main);
-	}
-
-	/**
-	 * The number of threads/locks in the graph has changed. Update the
-	 * underlying matrix.
-	 */
-	private void resizeGraph() {
-		// a new row and/or a new column was added to the graph.
-		// since new rows/columns are always added to the end, just transfer
-		// old entries to the new graph, with the same indices.
-		final int newRows = lockThreads.size();
-		final int newCols = locks.size();
-		//optimize 0x0 and 1x1 matrices
-		if (newRows == 0 && newCols == 0) {
-			graph = EMPTY_MATRIX;
-			return;
-		}
-		int[][] tempGraph = new int[newRows][newCols];
-		for (int i = 0; i < graph.length; i++)
-			System.arraycopy(graph[i], 0, tempGraph[i], 0, graph[i].length);
-		graph = tempGraph;
-		resize = false;
-	}
-
-	/**
-	 * Get the thread whose locks can be suspended. (i.e. all locks it owns are
-	 * actual locks and not rules). Return the first thread in the array by default.
-	 */
-	private Thread resolutionCandidate(Thread[] candidates) {
-		//first look for a candidate that has no scheduling rules
-		for (int i = 0; i < candidates.length; i++) {
-			if (!ownsRuleLocks(candidates[i]))
-				return candidates[i];
-		}
-		//next look for any candidate with a real lock (a lock that can be suspended)
-		for (int i = 0; i < candidates.length; i++) {
-			if (ownsRealLocks(candidates[i]))
-				return candidates[i];
-		}
-		//unnecessary, return the first entry in the array by default
-		return candidates[0];
-	}
-
-	/**
-	 * The given thread is waiting for the given lock. Update the graph.
-	 */
-	private void setToWait(Thread owner, ISchedulingRule lock, boolean suspend) {
-		boolean needTransfer = false;
-		/**
-		 * if we are adding an entry where a thread is waiting on a scheduling rule,
-		 * then we need to transfer all positive entries for a conflicting rule to the
-		 * newly added rule in order to synchronize the graph.
-		 */
-		if (!suspend && !(lock instanceof ILock))
-			needTransfer = true;
-		int lockIndex = indexOf(lock, !suspend);
-		int threadIndex = indexOf(owner, !suspend);
-		if (resize)
-			resizeGraph();
-
-		graph[threadIndex][lockIndex] = WAITING_FOR_LOCK;
-		if (needTransfer)
-			fillPresentEntries(lock, lockIndex);
-	}
-
-	/**
-	 * Prints out the current matrix to standard output. 
-	 * Only used for debugging.
-	 */
-	public void toDebugString() {
-		System.out.println(" :: "); //$NON-NLS-1$
-		for (int j = 0; j < locks.size(); j++) {
-			System.out.print(" " + locks.get(j) + ','); //$NON-NLS-1$
-		}
-		System.out.println();
-		for (int i = 0; i < graph.length; i++) {
-			System.out.print(" " + ((Thread) lockThreads.get(i)).getName() + " : "); //$NON-NLS-1$ //$NON-NLS-2$
-			for (int j = 0; j < graph[i].length; j++) {
-				System.out.print(" " + graph[i][j] + ','); //$NON-NLS-1$
-			}
-			System.out.println();
-		}
-		System.out.println("-------"); //$NON-NLS-1$
-	}
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ImplicitJobs.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ImplicitJobs.java
deleted file mode 100644
index c12d74b..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ImplicitJobs.java
+++ /dev/null
@@ -1,247 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.jobs;
-
-import java.util.*;
-import org.eclipse.core.internal.runtime.RuntimeLog;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.core.runtime.jobs.Job;
-
-/**
- * Implicit jobs are jobs that are running by virtue of a JobManager.begin/end
- * pair. They act like normal jobs, except they are tied to an arbitrary thread
- * of the client's choosing, and they can be nested.
- */
-class ImplicitJobs {
-	/**
-	 * Cached unused instance that can be reused 
-	 */
-	private ThreadJob jobCache = null;
-	protected JobManager manager;
-
-	/**
-	 * Set of suspended scheduling rules.
-	 */
-	private final Set suspendedRules = new HashSet(20);
-
-	/**
-	 * Maps (Thread->ThreadJob), threads to the currently running job for that
-	 * thread.
-	 */
-	private final Map threadJobs = new HashMap(20);
-
-	ImplicitJobs(JobManager manager) {
-		this.manager = manager;
-	}
-
-	/* (Non-javadoc) 
-	 * @see IJobManager#beginRule 
-	 */
-	void begin(ISchedulingRule rule, IProgressMonitor monitor, boolean suspend) {
-		if (JobManager.DEBUG_BEGIN_END)
-			JobManager.debug("Begin rule: " + rule); //$NON-NLS-1$
-		final Thread currentThread = Thread.currentThread();
-		ThreadJob threadJob;
-		synchronized (this) {
-			threadJob = (ThreadJob) threadJobs.get(currentThread);
-			if (threadJob != null) {
-				//nested rule, just push on stack and return
-				threadJob.push(rule);
-				return;
-			}
-			//no need to schedule a thread job for a null rule
-			if (rule == null)
-				return;
-			//create a thread job for this thread, use the rule from the real job if it has one
-			Job realJob = manager.currentJob();
-			if (realJob != null && realJob.getRule() != null)
-				threadJob = newThreadJob(realJob.getRule());
-			else {
-				threadJob = newThreadJob(rule);
-				threadJob.acquireRule = true;
-			}
-			//don't acquire rule if it is a suspended rule
-			if (isSuspended(rule))
-				threadJob.acquireRule = false;
-			//indicate if it is a system job to ensure isBlocking works correctly
-			threadJob.setRealJob(realJob);
-			threadJob.setThread(currentThread);
-		}
-		try {
-			threadJob.push(rule);
-			//join the thread job outside sync block
-			if (threadJob.acquireRule) {
-				//no need to re-aquire any locks because the thread did not wait to get this lock
-				if (manager.runNow(threadJob))
-					manager.getLockManager().addLockThread(Thread.currentThread(), rule);
-				else
-					threadJob = threadJob.joinRun(monitor);
-			}
-		} finally {
-			//remember this thread job  - only do this
-			//after the rule is acquired because it is ok for this thread to acquire
-			//and release other rules while waiting.
-			synchronized (this) {
-				threadJobs.put(currentThread, threadJob);
-				if (suspend)
-					suspendedRules.add(rule);
-			}
-			if (threadJob.isBlocked) {
-				threadJob.isBlocked = false;
-				manager.reportUnblocked(monitor);
-			}
-		}
-	}
-
-	/* (Non-javadoc) 
-	 * @see IJobManager#endRule 
-	 */
-	synchronized void end(ISchedulingRule rule, boolean resume) {
-		if (JobManager.DEBUG_BEGIN_END)
-			JobManager.debug("End rule: " + rule); //$NON-NLS-1$
-		ThreadJob threadJob = (ThreadJob) threadJobs.get(Thread.currentThread());
-		if (threadJob == null)
-			Assert.isLegal(rule == null, "endRule without matching beginRule: " + rule); //$NON-NLS-1$
-		else if (threadJob.pop(rule)) {
-			endThreadJob(threadJob, resume);
-		}
-	}
-
-	/**
-	 * Called when a worker thread has finished running a job. At this
-	 * point, the worker thread must not own any scheduling rules
-	 * @param lastJob The last job to run in this thread
-	 */
-	void endJob(InternalJob lastJob) {
-		final Thread currentThread = Thread.currentThread();
-		IStatus error;
-		synchronized (this) {
-			ThreadJob threadJob = (ThreadJob) threadJobs.get(currentThread);
-			if (threadJob == null)
-				return;
-			String msg = "Worker thread ended job: " + lastJob + ", but still holds rule: " + threadJob; //$NON-NLS-1$ //$NON-NLS-2$
-			error = new Status(IStatus.ERROR, JobManager.PI_JOBS, 1, msg, null);
-			//end the thread job
-			endThreadJob(threadJob, false);
-		}
-		try {
-			RuntimeLog.log(error);
-		} catch (RuntimeException e) {
-			//failed to log, so print to console instead
-			System.err.println(error.getMessage());
-		}
-	}
-
-	private void endThreadJob(ThreadJob threadJob, boolean resume) {
-		Thread currentThread = Thread.currentThread();
-		//clean up when last rule scope exits
-		threadJobs.remove(currentThread);
-		ISchedulingRule rule = threadJob.getRule();
-		if (resume && rule != null)
-			suspendedRules.remove(rule);
-		//if this job had a rule, then we are essentially releasing a lock
-		//note it is safe to do this even if the acquire was aborted
-		if (threadJob.acquireRule)
-			manager.getLockManager().removeLockThread(currentThread, rule);
-		//if the job was started, we need to notify job manager to end it
-		if (threadJob.isRunning())
-			manager.endJob(threadJob, Status.OK_STATUS, false);
-		recycle(threadJob);
-	}
-
-	/**
-	 * Returns true if this rule has been suspended, and false otherwise.
-	 */
-	private boolean isSuspended(ISchedulingRule rule) {
-		if (suspendedRules.size() == 0)
-			return false;
-		for (Iterator it = suspendedRules.iterator(); it.hasNext();)
-			if (((ISchedulingRule) it.next()).contains(rule))
-				return true;
-		return false;
-	}
-
-	/**
-	 * Returns a new or reused ThreadJob instance. 
-	 */
-	private ThreadJob newThreadJob(ISchedulingRule rule) {
-		if (jobCache != null) {
-			ThreadJob job = jobCache;
-			job.setRule(rule);
-			job.acquireRule = job.isRunning = false;
-			job.realJob = null;
-			jobCache = null;
-			return job;
-		}
-		return new ThreadJob(manager, rule);
-	}
-
-	/**
-	 * Indicates that a thread job is no longer in use and can be reused. 
-	 */
-	private void recycle(ThreadJob job) {
-		if (jobCache == null && job.recycle())
-			jobCache = job;
-	}
-
-	/**
-	 * Implements IJobManager#resume(ISchedulingRule)
-	 * @param rule
-	 */
-	void resume(ISchedulingRule rule) {
-		//resume happens as a consequence of freeing the last rule in the stack
-		end(rule, true);
-		if (JobManager.DEBUG_BEGIN_END)
-			JobManager.debug("Resume rule: " + rule); //$NON-NLS-1$
-	}
-
-	/**
-	 * Implements IJobManager#suspend(ISchedulingRule, IProgressMonitor)
-	 * @param rule
-	 * @param monitor
-	 */
-	void suspend(ISchedulingRule rule, IProgressMonitor monitor) {
-		if (JobManager.DEBUG_BEGIN_END)
-			JobManager.debug("Suspend rule: " + rule); //$NON-NLS-1$
-		//the suspend job will be remembered once the rule is acquired
-		begin(rule, monitor, true);
-	}
-
-	/**
-	 * Implements IJobManager#transferRule(ISchedulingRule, Thread)
-	 */
-	synchronized void transfer(ISchedulingRule rule, Thread destinationThread) {
-		//nothing to do for null
-		if (rule == null)
-			return;
-		final Thread currentThread = Thread.currentThread();
-		//nothing to do if transferring to the same thread
-		if (currentThread == destinationThread)
-			return;
-		//ensure destination thread doesn't already have a rule
-		ThreadJob job = (ThreadJob) threadJobs.get(destinationThread);
-		Assert.isLegal(job == null);
-		//ensure calling thread owns the job being transferred
-		job = (ThreadJob) threadJobs.get(currentThread);
-		Assert.isLegal(job != null);
-		Assert.isLegal(job.getRule() == rule);
-		//transfer the thread job without ending it
-		job.setThread(destinationThread);
-		threadJobs.remove(currentThread);
-		threadJobs.put(destinationThread, job);
-		//transfer lock
-		if (job.acquireRule) {
-			manager.getLockManager().removeLockThread(currentThread, rule);
-			manager.getLockManager().addLockThread(destinationThread, rule);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/InternalJob.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/InternalJob.java
deleted file mode 100644
index 824cc13..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/InternalJob.java
+++ /dev/null
@@ -1,514 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.jobs;
-
-import java.util.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.jobs.*;
-
-/**
- * Internal implementation class for jobs. Clients must not implement this class
- * directly.  All jobs must be subclasses of the API <code>org.eclipse.core.runtime.jobs.Job</code> class.
- */
-public abstract class InternalJob extends PlatformObject implements Comparable {
-	/** 
-	 * Job state code (value 16) indicating that a job has been removed from
-	 * the wait queue and is about to start running. From an API point of view, 
-	 * this is the same as RUNNING.
-	 */
-	static final int ABOUT_TO_RUN = 0x10;
-
-	/** 
-	 * Job state code (value 32) indicating that a job has passed scheduling
-	 * precondition checks and is about to be added to the wait queue. From an API point of view, 
-	 * this is the same as WAITING.
-	 */
-	static final int ABOUT_TO_SCHEDULE = 0x20;
-	/** 
-	 * Job state code (value 8) indicating that a job is blocked by another currently
-	 * running job.  From an API point of view, this is the same as WAITING.
-	 */
-	static final int BLOCKED = 0x08;
-
-	//flag mask bits
-	private static final int M_STATE = 0xFF;
-	private static final int M_SYSTEM = 0x0100;
-	private static final int M_USER = 0x0200;
-
-	protected static final JobManager manager = JobManager.getInstance();
-	private static int nextJobNumber = 0;
-
-	/**
-	 * Start time constant indicating a job should be started at
-	 * a time in the infinite future, causing it to sleep forever.
-	 */
-	static final long T_INFINITE = Long.MAX_VALUE;
-	/**
-	 * Start time constant indicating that the job has no start time.
-	 */
-	static final long T_NONE = -1;
-
-	private volatile int flags = Job.NONE;
-	private final int jobNumber = nextJobNumber++;
-	private ListenerList listeners = null;
-	private IProgressMonitor monitor;
-	private String name;
-	/**
-	 * The job ahead of me in a queue or list.
-	 */
-	private InternalJob next;
-	/**
-	 * The job behind me in a queue or list.
-	 */
-	private InternalJob previous;
-	private int priority = Job.LONG;
-	/**
-	 * Arbitrary properties (key,value) pairs, attached
-	 * to a job instance by a third party.
-	 */
-	private ObjectMap properties;
-	private IStatus result;
-	private ISchedulingRule schedulingRule;
-	/**
-	 * If the job is waiting, this represents the time the job should start by.  
-	 * If this job is sleeping, this represents the time the job should wake up.
-	 * If this job is running, this represents the delay automatic rescheduling,
-	 * or -1 if the job should not be rescheduled.
-	 */
-	private long startTime;
-	/*
-	 * The thread that is currently running this job
-	 */
-	private volatile Thread thread = null;
-
-	protected InternalJob(String name) {
-		Assert.isNotNull(name);
-		this.name = name;
-	}
-
-	/* (non-Javadoc)
-	 * @see Job#addJobListener(IJobChangeListener)
-	 */
-	protected void addJobChangeListener(IJobChangeListener listener) {
-		if (listeners == null)
-			listeners = new ListenerList(ListenerList.IDENTITY);
-		listeners.add(listener);
-	}
-
-	/**
-	 * Adds an entry at the end of the list of which this item is the head.
-	 */
-	final void addLast(InternalJob entry) {
-		if (previous == null) {
-			previous = entry;
-			entry.next = this;
-			entry.previous = null;
-		} else {
-			Assert.isTrue(previous.next() == this);
-			previous.addLast(entry);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see Job#belongsTo(Object)
-	 */
-	protected boolean belongsTo(Object family) {
-		return false;
-	}
-
-	/* (non-Javadoc)
-	 * @see Job#cancel()
-	 */
-	protected boolean cancel() {
-		return manager.cancel(this);
-	}
-
-	/* (on-Javadoc)
-	 * @see java.lang.Comparable#compareTo(java.lang.Object)
-	 */
-	public final int compareTo(Object otherJob) {
-		return ((InternalJob) otherJob).startTime >= startTime ? 1 : -1;
-	}
-
-	/* (non-Javadoc)
-	 * @see Job#done(IStatus)
-	 */
-	protected void done(IStatus endResult) {
-		manager.endJob(this, endResult, true);
-	}
-
-	/**
-	 * Returns the job listeners that are only listening to this job.  Returns 
-	 * <code>null</code> if this job has no listeners.
-	 */
-	final ListenerList getListeners() {
-		return listeners;
-	}
-
-	/* (non-Javadoc)
-	 * @see Job#getName()
-	 */
-	protected String getName() {
-		return name;
-	}
-
-	/* (non-Javadoc)
-	 * @see Job#getPriority()
-	 */
-	protected int getPriority() {
-		return priority;
-	}
-
-	/**
-	 * Returns the job's progress monitor, or null if it is not running.
-	 */
-	final IProgressMonitor getProgressMonitor() {
-		return monitor;
-	}
-
-	/* (non-Javadoc)
-	 * @see Job#getProperty
-	 */
-	protected Object getProperty(QualifiedName key) {
-		// thread safety: (Concurrency001 - copy on write)
-		Map temp = properties;
-		if (temp == null)
-			return null;
-		return temp.get(key);
-	}
-
-	/* (non-Javadoc)
-	 * @see Job#getResult
-	 */
-	protected IStatus getResult() {
-		return result;
-	}
-
-	/* (non-Javadoc)
-	 * @see Job#getRule
-	 */
-	protected ISchedulingRule getRule() {
-		return schedulingRule;
-	}
-
-	/**
-	 * Returns the time that this job should be started, awakened, or
-	 * rescheduled, depending on the current state.
-	 * @return time in milliseconds
-	 */
-	final long getStartTime() {
-		return startTime;
-	}
-
-	/* (non-Javadoc)
-	 * @see Job#getState()
-	 */
-	protected int getState() {
-		int state = flags & M_STATE;
-		switch (state) {
-			//blocked state is equivalent to waiting state for clients
-			case BLOCKED :
-				return Job.WAITING;
-			case ABOUT_TO_RUN :
-				return Job.RUNNING;
-			case ABOUT_TO_SCHEDULE :
-				return Job.WAITING;
-			default :
-				return state;
-		}
-	}
-
-	/* (non-javadoc)
-	 * @see Job.getThread
-	 */
-	protected Thread getThread() {
-		return thread;
-	}
-
-	/**
-	 * Returns the raw job state, including internal states no exposed as API.
-	 */
-	final int internalGetState() {
-		return flags & M_STATE;
-	}
-
-	/**
-	 * Must be called from JobManager#setPriority
-	 */
-	final void internalSetPriority(int newPriority) {
-		this.priority = newPriority;
-	}
-
-	/**
-	 * Must be called from JobManager#setRule
-	 */
-	final void internalSetRule(ISchedulingRule rule) {
-		this.schedulingRule = rule;
-	}
-
-	/**
-	 * Must be called from JobManager#changeState
-	 */
-	final void internalSetState(int i) {
-		flags = (flags & ~M_STATE) | i;
-	}
-
-	/* (non-Javadoc)
-	 * @see Job#isBlocking()
-	 */
-	protected boolean isBlocking() {
-		return manager.isBlocking(this);
-	}
-
-	/**
-	 * Returns true if this job conflicts with the given job, and false otherwise.
-	 */
-	final boolean isConflicting(InternalJob otherJob) {
-		ISchedulingRule otherRule = otherJob.getRule();
-		if (schedulingRule == null || otherRule == null)
-			return false;
-		//if one of the rules is a compound rule, it must be asked the question.
-		if (schedulingRule.getClass() == MultiRule.class)
-			return schedulingRule.isConflicting(otherRule);
-		return otherRule.isConflicting(schedulingRule);
-	}
-
-	/* (non-javadoc)
-	 * @see Job.isSystem()
-	 */
-	protected boolean isSystem() {
-		return (flags & M_SYSTEM) != 0;
-	}
-
-	/* (non-javadoc)
-	 * @see Job.isUser()
-	 */
-	protected boolean isUser() {
-		return (flags & M_USER) != 0;
-	}
-
-	/* (non-Javadoc)
-	 * @see Job#join()
-	 */
-	protected void join() throws InterruptedException {
-		manager.join(this);
-	}
-
-	/**
-	 * Returns the next entry (ahead of this one) in the list, or null if there is no next entry
-	 */
-	final InternalJob next() {
-		return next;
-	}
-
-	/**
-	 * Returns the previous entry (behind this one) in the list, or null if there is no previous entry
-	 */
-	final InternalJob previous() {
-		return previous;
-	}
-
-	/**
-	 * Removes this entry from any list it belongs to.  Returns the receiver.
-	 */
-	final InternalJob remove() {
-		if (next != null)
-			next.setPrevious(previous);
-		if (previous != null)
-			previous.setNext(next);
-		next = previous = null;
-		return this;
-	}
-
-	/* (non-Javadoc)
-	 * @see Job#removeJobListener(IJobChangeListener)
-	 */
-	protected void removeJobChangeListener(IJobChangeListener listener) {
-		if (listeners != null)
-			listeners.remove(listener);
-	}
-
-	/* (non-Javadoc)
-	 * @see Job#run(IProgressMonitor)
-	 */
-	protected abstract IStatus run(IProgressMonitor progressMonitor);
-
-	/* (non-Javadoc)
-	 * @see Job#schedule(long)
-	 */
-	protected void schedule(long delay) {
-		if (shouldSchedule())
-			manager.schedule(this, delay, false);
-	}
-
-	/* (non-Javadoc)
-	 * @see Job#setName(String)
-	 */
-	protected void setName(String name) {
-		Assert.isNotNull(name);
-		this.name = name;
-	}
-
-	/**
-	 * Sets the next entry in this linked list of jobs.
-	 * @param entry
-	 */
-	final void setNext(InternalJob entry) {
-		this.next = entry;
-	}
-
-	/**
-	 * Sets the previous entry in this linked list of jobs.
-	 * @param entry
-	 */
-	final void setPrevious(InternalJob entry) {
-		this.previous = entry;
-	}
-
-	/* (non-Javadoc)
-	 * @see Job#setPriority(int)
-	 */
-	protected void setPriority(int newPriority) {
-		switch (newPriority) {
-			case Job.INTERACTIVE :
-			case Job.SHORT :
-			case Job.LONG :
-			case Job.BUILD :
-			case Job.DECORATE :
-				manager.setPriority(this, newPriority);
-				break;
-			default :
-				throw new IllegalArgumentException(String.valueOf(newPriority));
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see Job#setProgressGroup(IProgressMonitor, int)
-	 */
-	protected void setProgressGroup(IProgressMonitor group, int ticks) {
-		Assert.isNotNull(group);
-		IProgressMonitor pm = manager.createMonitor(this, group, ticks);
-		if (pm != null)
-			setProgressMonitor(pm);
-	}
-
-	/**
-	 * Sets the progress monitor to use for the next execution of this job,
-	 * or for clearing the monitor when a job completes.
-	 * @param monitor a progress monitor
-	 */
-	final void setProgressMonitor(IProgressMonitor monitor) {
-		this.monitor = monitor;
-	}
-
-	/* (non-Javadoc)
-	 * @see Job#setProperty(QualifiedName,Object)
-	 */
-	protected void setProperty(QualifiedName key, Object value) {
-		// thread safety: (Concurrency001 - copy on write)
-		if (value == null) {
-			if (properties == null)
-				return;
-			ObjectMap temp = (ObjectMap) properties.clone();
-			temp.remove(key);
-			if (temp.isEmpty())
-				properties = null;
-			else
-				properties = temp;
-		} else {
-			ObjectMap temp = properties;
-			if (temp == null)
-				temp = new ObjectMap(5);
-			else
-				temp = (ObjectMap) properties.clone();
-			temp.put(key, value);
-			properties = temp;
-		}
-	}
-
-	/**
-	 * Sets or clears the result of an execution of this job.
-	 * @param result a result status, or <code>null</code>
-	 */
-	final void setResult(IStatus result) {
-		this.result = result;
-	}
-
-	/* (non-Javadoc)
-	 * @see Job#setRule(ISchedulingRule)
-	 */
-	protected void setRule(ISchedulingRule rule) {
-		manager.setRule(this, rule);
-	}
-
-	/**
-	 * Sets a time to start, wake up, or schedule this job, 
-	 * depending on the current state
-	 * @param time a time in milliseconds
-	 */
-	final void setStartTime(long time) {
-		startTime = time;
-	}
-
-	/* (non-javadoc)
-	 * @see Job.setSystem
-	 */
-	protected void setSystem(boolean value) {
-		if (getState() != Job.NONE)
-			throw new IllegalStateException();
-		flags = value ? flags | M_SYSTEM : flags & ~M_SYSTEM;
-	}
-
-	/* (non-javadoc)
-	 * @see Job.setThread
-	 */
-	protected void setThread(Thread thread) {
-		this.thread = thread;
-	}
-
-	/* (non-javadoc)
-	 * @see Job.setUser
-	 */
-	protected void setUser(boolean value) {
-		if (getState() != Job.NONE)
-			throw new IllegalStateException();
-		flags = value ? flags | M_USER : flags & ~M_USER;
-	}
-
-	/* (Non-javadoc)
-	 * @see Job#shouldSchedule
-	 */
-	protected boolean shouldSchedule() {
-		return true;
-	}
-
-	/* (non-Javadoc)
-	 * @see Job#sleep()
-	 */
-	protected boolean sleep() {
-		return manager.sleep(this);
-	}
-
-	/* (non-Javadoc)
-	 * Prints a string-based representation of this job instance. 
-	 * For debugging purposes only.
-	 */
-	public String toString() {
-		return getName() + "(" + jobNumber + ")"; //$NON-NLS-1$//$NON-NLS-2$
-	}
-
-	/* (non-Javadoc)
-	 * @see Job#wakeUp(long)
-	 */
-	protected void wakeUp(long delay) {
-		manager.wakeUp(this, delay);
-	}
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobActivator.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobActivator.java
deleted file mode 100644
index fc9bc11..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobActivator.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.jobs;
-
-import java.util.Hashtable;
-import org.eclipse.core.runtime.jobs.IJobManager;
-import org.osgi.framework.*;
-
-/**
- * The Jobs plugin class.
- */
-public class JobActivator implements BundleActivator {
-
-	/**
-	 * The bundle associated this plug-in
-	 */
-	private static BundleContext bundleContext;
-
-	/**
-	 * This plugin provides a JobManager service.
-	 */
-	private ServiceRegistration jobManagerService = null;
-
-	/**
-	 * This method is called upon plug-in activation
-	 */
-	public void start(BundleContext context) throws Exception {
-		bundleContext = context;
-		registerServices();
-	}
-
-	/**
-	 * This method is called when the plug-in is stopped
-	 */
-	public void stop(BundleContext context) throws Exception {
-		unregisterServices();
-		JobManager.shutdown();
-		JobOSGiUtils.getDefault().closeServices();
-		bundleContext = null;
-	}
-
-	static BundleContext getContext() {
-		return bundleContext;
-	}
-
-	private void registerServices() {
-		jobManagerService = bundleContext.registerService(IJobManager.class.getName(), JobManager.getInstance(), new Hashtable());
-	}
-
-	private void unregisterServices() {
-		if (jobManagerService != null) {
-			jobManagerService.unregister();
-			jobManagerService = null;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobChangeEvent.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobChangeEvent.java
deleted file mode 100644
index f2889d2..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobChangeEvent.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.jobs;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.jobs.IJobChangeEvent;
-import org.eclipse.core.runtime.jobs.Job;
-
-public class JobChangeEvent implements IJobChangeEvent {
-	/**
-	 * The job on which this event occurred.
-	 */
-	Job job = null;
-	/**
-	 * The result returned by the job's run method, or <code>null</code> if
-	 * not applicable.
-	 */
-	IStatus result = null;
-	/**
-	 * The amount of time to wait after scheduling the job before it should be run,
-	 * or <code>-1</code> if not applicable for this type of event.
-	 */
-	long delay = -1;
-	/**
-	 * Whether this job is being immediately rescheduled.
-	 */
-	boolean reschedule = false;
-
-	/* (non-Javadoc)
-	 * Method declared on IJobChangeEvent
-	 */
-	public long getDelay() {
-		return delay;
-	}
-
-	/* (non-Javadoc)
-	 * Method declared on IJobChangeEvent
-	 */
-	public Job getJob() {
-		return job;
-	}
-
-	/* (non-Javadoc)
-	 * Method declared on IJobChangeEvent
-	 */
-	public IStatus getResult() {
-		return result;
-	}
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobListeners.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobListeners.java
deleted file mode 100644
index f03b747..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobListeners.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.jobs;
-
-import org.eclipse.core.internal.runtime.RuntimeLog;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.jobs.*;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * Responsible for notifying all job listeners about job lifecycle events.  Uses a
- * specialized iterator to ensure the complex iteration logic is contained in one place.
- */
-class JobListeners {
-	interface IListenerDoit {
-		public void notify(IJobChangeListener listener, IJobChangeEvent event);
-	}
-
-	private final IListenerDoit aboutToRun = new IListenerDoit() {
-		public void notify(IJobChangeListener listener, IJobChangeEvent event) {
-			listener.aboutToRun(event);
-		}
-	};
-	private final IListenerDoit awake = new IListenerDoit() {
-		public void notify(IJobChangeListener listener, IJobChangeEvent event) {
-			listener.awake(event);
-		}
-	};
-	private final IListenerDoit done = new IListenerDoit() {
-		public void notify(IJobChangeListener listener, IJobChangeEvent event) {
-			listener.done(event);
-		}
-	};
-	private final IListenerDoit running = new IListenerDoit() {
-		public void notify(IJobChangeListener listener, IJobChangeEvent event) {
-			listener.running(event);
-		}
-	};
-	private final IListenerDoit scheduled = new IListenerDoit() {
-		public void notify(IJobChangeListener listener, IJobChangeEvent event) {
-			listener.scheduled(event);
-		}
-	};
-	private final IListenerDoit sleeping = new IListenerDoit() {
-		public void notify(IJobChangeListener listener, IJobChangeEvent event) {
-			listener.sleeping(event);
-		}
-	};
-	/**
-	 * The global job listeners.
-	 */
-	protected final ListenerList global = new ListenerList(ListenerList.IDENTITY);
-
-	/**
-	 * TODO Could use an instance pool to re-use old event objects
-	 */
-	static JobChangeEvent newEvent(Job job) {
-		JobChangeEvent instance = new JobChangeEvent();
-		instance.job = job;
-		return instance;
-	}
-
-	static JobChangeEvent newEvent(Job job, IStatus result) {
-		JobChangeEvent instance = new JobChangeEvent();
-		instance.job = job;
-		instance.result = result;
-		return instance;
-	}
-
-	static JobChangeEvent newEvent(Job job, long delay) {
-		JobChangeEvent instance = new JobChangeEvent();
-		instance.job = job;
-		instance.delay = delay;
-		return instance;
-	}
-
-	/**
-	 * Process the given doit for all global listeners and all local listeners
-	 * on the given job.
-	 */
-	private void doNotify(final IListenerDoit doit, final IJobChangeEvent event) {
-		//notify all global listeners
-		Object[] listeners = global.getListeners();
-		int size = listeners.length;
-		for (int i = 0; i < size; i++) {
-			try {
-				if (listeners[i] != null)
-					doit.notify((IJobChangeListener) listeners[i], event);
-			} catch (Exception e) {
-				handleException(listeners[i], e);
-			} catch (LinkageError e) {
-				handleException(listeners[i], e);
-			}
-		}
-		//notify all local listeners
-		ListenerList list = ((InternalJob) event.getJob()).getListeners();
-		listeners = list == null ? null : list.getListeners();
-		if (listeners == null)
-			return;
-		size = listeners.length;
-		for (int i = 0; i < size; i++) {
-			try {
-				if (listeners[i] != null)
-					doit.notify((IJobChangeListener) listeners[i], event);
-			} catch (Exception e) {
-				handleException(listeners[i], e);
-			} catch (LinkageError e) {
-				handleException(listeners[i], e);
-			}
-		}
-	}
-
-	private void handleException(Object listener, Throwable e) {
-		//this code is roughly copied from InternalPlatform.run(ISafeRunnable), 
-		//but in-lined here for performance reasons
-		if (e instanceof OperationCanceledException)
-			return;
-		String pluginId = JobOSGiUtils.getDefault().getBundleId(listener);
-		if (pluginId == null)
-			pluginId = JobManager.PI_JOBS;
-		String message = NLS.bind(JobMessages.meta_pluginProblems, pluginId);
-		RuntimeLog.log(new Status(IStatus.ERROR, pluginId, JobManager.PLUGIN_ERROR, message, e));
-	}
-
-	public void add(IJobChangeListener listener) {
-		global.add(listener);
-	}
-
-	public void remove(IJobChangeListener listener) {
-		global.remove(listener);
-	}
-
-	public void aboutToRun(Job job) {
-		doNotify(aboutToRun, newEvent(job));
-	}
-
-	public void awake(Job job) {
-		doNotify(awake, newEvent(job));
-	}
-
-	public void done(Job job, IStatus result, boolean reschedule) {
-		JobChangeEvent event = newEvent(job, result);
-		event.reschedule = reschedule;
-		doNotify(done, event);
-	}
-
-	public void running(Job job) {
-		doNotify(running, newEvent(job));
-	}
-
-	public void scheduled(Job job, long delay, boolean reschedule) {
-		JobChangeEvent event = newEvent(job, delay);
-		event.reschedule = reschedule;
-		doNotify(scheduled, event);
-	}
-
-	public void sleeping(Job job) {
-		doNotify(sleeping, newEvent(job));
-	}
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobManager.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobManager.java
deleted file mode 100644
index 37a9306..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobManager.java
+++ /dev/null
@@ -1,1199 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.jobs;
-
-import java.text.*;
-import java.util.*;
-import org.eclipse.core.internal.runtime.RuntimeLog;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.jobs.*;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * Implementation of API type IJobManager
- * 
- * Implementation note: all the data structures of this class are protected
- * by a single lock object held as a private field in this class.  The JobManager
- * instance itself is not used because this class is publicly reachable, and third
- * party clients may try to synchronize on it.
- * 
- * The WorkerPool class uses its own monitor for synchronizing its data
- * structures. To avoid deadlock between the two classes, the JobManager
- * must NEVER call the worker pool while its own monitor is held.
- */
-public class JobManager implements IJobManager {
-
-	/**
-	 * Status code constant indicating an error occurred while running a plug-in.
-	 * For backward compatibility with Platform.PLUGIN_ERROR left at (value = 2).
-	 */
-	public static final int PLUGIN_ERROR = 2;
-
-	private static final String PLUGIN_NAME = "org.eclipse.core.jobs"; //$NON-NLS-1$
-	private static final String OPTION_DEADLOCK_ERROR = PLUGIN_NAME + "/jobs/errorondeadlock"; //$NON-NLS-1$
-	private static final String OPTION_DEBUG_BEGIN_END = PLUGIN_NAME + "/jobs/beginend"; //$NON-NLS-1$
-	private static final String OPTION_DEBUG_JOBS = PLUGIN_NAME + "/jobs"; //$NON-NLS-1$
-	private static final String OPTION_DEBUG_JOBS_TIMING = PLUGIN_NAME + "/jobs/timing"; //$NON-NLS-1$
-	private static final String OPTION_LOCKS = PLUGIN_NAME + "/jobs/locks"; //$NON-NLS-1$
-	private static final String OPTION_SHUTDOWN = PLUGIN_NAME + "/jobs/shutdown"; //$NON-NLS-1$
-
-	static boolean DEBUG = false;
-	static boolean DEBUG_BEGIN_END = false;
-	static boolean DEBUG_DEADLOCK = false;
-	static boolean DEBUG_LOCKS = false;
-	static boolean DEBUG_TIMING = false;
-	static boolean DEBUG_SHUTDOWN = false;
-	private static DateFormat DEBUG_FORMAT;
-
-	/**
-	 * The singleton job manager instance. It must be a singleton because
-	 * all job instances maintain a reference (as an optimization) and have no way 
-	 * of updating it.
-	 */
-	private static JobManager instance;
-	/**
-	 * Scheduling rule used for validation of client-defined rules.
-	 */
-	private static final ISchedulingRule nullRule = new ISchedulingRule() {
-		public boolean contains(ISchedulingRule rule) {
-			return rule == this;
-		}
-
-		public boolean isConflicting(ISchedulingRule rule) {
-			return rule == this;
-		}
-	};
-
-	/**
-	 * True if this manager is active, and false otherwise.  A job manager
-	 * starts out active, and becomes inactive if it has been shutdown
-	 * and not restarted.
-	 */
-	private volatile boolean active = true;
-
-	final ImplicitJobs implicitJobs = new ImplicitJobs(this);
-
-	private final JobListeners jobListeners = new JobListeners();
-
-	/**
-	 * The lock for synchronizing all activity in the job manager.  To avoid deadlock,
-	 * this lock must never be held for extended periods, and must never be
-	 * held while third party code is being called.
-	 */
-	private final Object lock = new Object();
-
-	private final LockManager lockManager = new LockManager();
-
-	/**
-	 * The pool of worker threads.
-	 */
-	private WorkerPool pool;
-
-	private ProgressProvider progressProvider = null;
-	/**
-	 * Jobs that are currently running. Should only be modified from changeState
-	 */
-	private final HashSet running;
-
-	/**
-	 * Jobs that are sleeping.  Some sleeping jobs are scheduled to wake
-	 * up at a given start time, while others will sleep indefinitely until woken.
-	 * Should only be modified from changeState
-	 */
-	private final JobQueue sleeping;
-	/**
-	 * True if this manager has been suspended, and false otherwise.  A job manager
-	 * starts out not suspended, and becomes suspended when <code>suspend</code>
-	 * is invoked. Once suspended, no jobs will start running until <code>resume</code>
-	 * is called.
-	 */
-	private boolean suspended = false;
-
-	/**
-	 * jobs that are waiting to be run. Should only be modified from changeState
-	 */
-	private final JobQueue waiting;
-
-	/**
-	 * The unique identifier constant of this plug-in.
-	 */
-	public static final String PI_JOBS = "org.eclipse.core.jobs"; //$NON-NLS-1$
-
-	public static void debug(String msg) {
-		StringBuffer msgBuf = new StringBuffer(msg.length() + 40);
-		if (DEBUG_TIMING) {
-			//lazy initialize to avoid overhead when not debugging
-			if (DEBUG_FORMAT == null)
-				DEBUG_FORMAT = new SimpleDateFormat("HH:mm:ss.SSS"); //$NON-NLS-1$
-			DEBUG_FORMAT.format(new Date(), msgBuf, new FieldPosition(0));
-			msgBuf.append('-');
-		}
-		msgBuf.append('[').append(Thread.currentThread()).append(']').append(msg);
-		System.out.println(msgBuf.toString());
-	}
-
-	/**
-	 * Returns the job manager singleton. For internal use only.
-	 */
-	public static synchronized JobManager getInstance() {
-		if (instance == null)
-			new JobManager();
-		return instance;
-	}
-
-	/**
-	 * For debugging purposes only
-	 */
-	private static String printJobName(Job job) {
-		if (job instanceof ThreadJob) {
-			Job realJob = ((ThreadJob) job).realJob;
-			if (realJob != null)
-				return realJob.getClass().getName();
-			return "ThreadJob on rule: " + job.getRule(); //$NON-NLS-1$
-		}
-		return job.getClass().getName();
-	}
-
-	/**
-	 * For debugging purposes only
-	 */
-	public static String printState(int state) {
-		switch (state) {
-			case Job.NONE :
-				return "NONE"; //$NON-NLS-1$
-			case Job.WAITING :
-				return "WAITING"; //$NON-NLS-1$
-			case Job.SLEEPING :
-				return "SLEEPING"; //$NON-NLS-1$
-			case Job.RUNNING :
-				return "RUNNING"; //$NON-NLS-1$
-			case InternalJob.BLOCKED :
-				return "BLOCKED"; //$NON-NLS-1$
-			case InternalJob.ABOUT_TO_RUN :
-				return "ABOUT_TO_RUN"; //$NON-NLS-1$
-			case InternalJob.ABOUT_TO_SCHEDULE :
-				return "ABOUT_TO_SCHEDULE";//$NON-NLS-1$
-		}
-		return "UNKNOWN"; //$NON-NLS-1$
-	}
-
-	public static void shutdown() {
-		if (instance != null) {
-			instance.doShutdown();
-			instance = null;
-		}
-	}
-
-	private JobManager() {
-		instance = this;
-		initDebugOptions();
-		synchronized (lock) {
-			waiting = new JobQueue(false);
-			sleeping = new JobQueue(true);
-			running = new HashSet(10);
-			pool = new WorkerPool(this);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.jobs.IJobManager#addJobListener(org.eclipse.core.runtime.jobs.IJobChangeListener)
-	 */
-	public void addJobChangeListener(IJobChangeListener listener) {
-		jobListeners.add(listener);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.jobs.IJobManager#beginRule(org.eclipse.core.runtime.jobs.ISchedulingRule, org.eclipse.core.runtime.IProgressMonitor)
-	 */
-	public void beginRule(ISchedulingRule rule, IProgressMonitor monitor) {
-		validateRule(rule);
-		implicitJobs.begin(rule, monitorFor(monitor), false);
-	}
-
-	/**
-	 * Cancels a job
-	 */
-	protected boolean cancel(InternalJob job) {
-		IProgressMonitor monitor = null;
-		synchronized (lock) {
-			switch (job.getState()) {
-				case Job.NONE :
-					return true;
-				case Job.RUNNING :
-					//cannot cancel a job that has already started (as opposed to ABOUT_TO_RUN)
-					if (job.internalGetState() == Job.RUNNING) {
-						monitor = job.getProgressMonitor();
-						break;
-					}
-				//fall through for ABOUT_TO_RUN case
-				default :
-					changeState(job, Job.NONE);
-			}
-		}
-		//call monitor outside sync block
-		if (monitor != null) {
-			if (!monitor.isCanceled())
-				monitor.setCanceled(true);
-			return false;
-		}
-		//only notify listeners if the job was waiting or sleeping
-		jobListeners.done((Job) job, Status.CANCEL_STATUS, false);
-		return true;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.jobs.IJobManager#cancel(java.lang.String)
-	 */
-	public void cancel(Object family) {
-		//don't synchronize because cancel calls listeners
-		for (Iterator it = select(family).iterator(); it.hasNext();)
-			cancel((Job) it.next());
-	}
-
-	/**
-	 * Atomically updates the state of a job, adding or removing from the
-	 * necessary queues or sets.
-	 */
-	private void changeState(InternalJob job, int newState) {
-		synchronized (lock) {
-			int oldState = job.internalGetState();
-			switch (oldState) {
-				case Job.NONE :
-				case InternalJob.ABOUT_TO_SCHEDULE :
-					break;
-				case InternalJob.BLOCKED :
-					//remove this job from the linked list of blocked jobs
-					job.remove();
-					break;
-				case Job.WAITING :
-					try {
-						waiting.remove(job);
-					} catch (RuntimeException e) {
-						Assert.isLegal(false, "Tried to remove a job that wasn't in the queue"); //$NON-NLS-1$
-					}
-					break;
-				case Job.SLEEPING :
-					try {
-						sleeping.remove(job);
-					} catch (RuntimeException e) {
-						Assert.isLegal(false, "Tried to remove a job that wasn't in the queue"); //$NON-NLS-1$
-					}
-					break;
-				case Job.RUNNING :
-				case InternalJob.ABOUT_TO_RUN :
-					running.remove(job);
-					break;
-				default :
-					Assert.isLegal(false, "Invalid job state: " + job + ", state: " + oldState); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-			job.internalSetState(newState);
-			switch (newState) {
-				case Job.NONE :
-					job.setStartTime(InternalJob.T_NONE);
-				case InternalJob.BLOCKED :
-					break;
-				case Job.WAITING :
-					waiting.enqueue(job);
-					break;
-				case Job.SLEEPING :
-					try {
-						sleeping.enqueue(job);
-					} catch (RuntimeException e) {
-						throw new RuntimeException("Error changing from state: " + oldState); //$NON-NLS-1$
-					}
-					break;
-				case Job.RUNNING :
-				case InternalJob.ABOUT_TO_RUN :
-					job.setStartTime(InternalJob.T_NONE);
-					running.add(job);
-					break;
-				case InternalJob.ABOUT_TO_SCHEDULE :
-					break;
-				default :
-					Assert.isLegal(false, "Invalid job state: " + job + ", state: " + newState); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-	}
-
-	/**
-	 * Returns a new progress monitor for this job, belonging to the given
-	 * progress group.  Returns null if it is not a valid time to set the job's group.
-	 */
-	protected IProgressMonitor createMonitor(InternalJob job, IProgressMonitor group, int ticks) {
-		synchronized (lock) {
-			//group must be set before the job is scheduled
-			//this includes the ABOUT_TO_SCHEDULE state, during which it is still
-			//valid to set the progress monitor
-			if (job.getState() != Job.NONE)
-				return null;
-			IProgressMonitor monitor = null;
-			if (progressProvider != null)
-				monitor = progressProvider.createMonitor((Job) job, group, ticks);
-			if (monitor == null)
-				monitor = new NullProgressMonitor();
-			return monitor;
-		}
-	}
-
-	/**
-	 * Returns a new progress monitor for this job.  Never returns null.
-	 */
-	private IProgressMonitor createMonitor(Job job) {
-		IProgressMonitor monitor = null;
-		if (progressProvider != null)
-			monitor = progressProvider.createMonitor(job);
-		if (monitor == null)
-			monitor = new NullProgressMonitor();
-		return monitor;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.jobs.IJobManager#createProgressGroup()
-	 */
-	public IProgressMonitor createProgressGroup() {
-		if (progressProvider != null)
-			return progressProvider.createProgressGroup();
-		return new NullProgressMonitor();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.jobs.IJobManager#currentJob()
-	 */
-	public Job currentJob() {
-		Thread current = Thread.currentThread();
-		if (current instanceof Worker)
-			return ((Worker) current).currentJob();
-		synchronized (lock) {
-			for (Iterator it = running.iterator(); it.hasNext();) {
-				Job job = (Job) it.next();
-				if (job.getThread() == current)
-					return job;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the delay in milliseconds that a job with a given priority can
-	 * tolerate waiting.
-	 */
-	private long delayFor(int priority) {
-		//these values may need to be tweaked based on machine speed
-		switch (priority) {
-			case Job.INTERACTIVE :
-				return 0L;
-			case Job.SHORT :
-				return 50L;
-			case Job.LONG :
-				return 100L;
-			case Job.BUILD :
-				return 500L;
-			case Job.DECORATE :
-				return 1000L;
-			default :
-				Assert.isTrue(false, "Job has invalid priority: " + priority); //$NON-NLS-1$
-				return 0;
-		}
-	}
-
-	/**
-	 * Performs the scheduling of a job.  Does not perform any notifications.
-	 */
-	private void doSchedule(InternalJob job, long delay) {
-		synchronized (lock) {
-			//if it's a decoration job, don't run it right now if the system is busy
-			if (job.getPriority() == Job.DECORATE) {
-				long minDelay = running.size() * 100;
-				delay = Math.max(delay, minDelay);
-			}
-			if (delay > 0) {
-				job.setStartTime(System.currentTimeMillis() + delay);
-				changeState(job, Job.SLEEPING);
-			} else {
-				job.setStartTime(System.currentTimeMillis() + delayFor(job.getPriority()));
-				changeState(job, Job.WAITING);
-			}
-		}
-	}
-
-	/**
-	 * Shuts down the job manager.  Currently running jobs will be told
-	 * to stop, but worker threads may still continue processing.
-	 * (note: This implemented IJobManager.shutdown which was removed
-	 * due to problems caused by premature shutdown)
-	 */
-	private void doShutdown() {
-		Job[] toCancel = null;
-		synchronized (lock) {
-			if (active) {
-				active = false;
-				//cancel all running jobs
-				toCancel = (Job[]) running.toArray(new Job[running.size()]);
-				//clean up
-				sleeping.clear();
-				waiting.clear();
-				running.clear();
-			}
-		}
-
-		// Give running jobs a chance to finish. Wait 0.1 seconds for up to 3 times.
-		if (toCancel != null && toCancel.length > 0) {
-			for (int i = 0; i < toCancel.length; i++) {
-				cancel(toCancel[i]); // cancel jobs outside sync block to avoid deadlock
-			}
-
-			for (int waitAttempts = 0; waitAttempts < 3; waitAttempts++) {
-				Thread.yield();
-				synchronized (lock) {
-					if (running.isEmpty())
-						break;
-				}
-				if (DEBUG_SHUTDOWN) {
-					JobManager.debug("Shutdown - job wait cycle #" + (waitAttempts + 1)); //$NON-NLS-1$
-					Job[] stillRunning = null;
-					synchronized (lock) {
-						stillRunning = (Job[]) running.toArray(new Job[running.size()]);
-					}
-					if (stillRunning != null) {
-						for (int j = 0; j < stillRunning.length; j++) {
-							JobManager.debug("\tJob: " + printJobName(stillRunning[j])); //$NON-NLS-1$
-						}
-					}
-				}
-				try {
-					Thread.sleep(100);
-				} catch (InterruptedException e) {
-					//ignore
-				}
-				Thread.yield();
-			}
-
-			synchronized (lock) { // retrieve list of the jobs that are still running
-				toCancel = (Job[]) running.toArray(new Job[running.size()]);
-			}
-		}
-
-		if (toCancel != null) {
-			for (int i = 0; i < toCancel.length; i++) {
-				String jobName = printJobName(toCancel[i]);
-				//this doesn't need to be translated because it's just being logged
-				String msg = "Job found still running after platform shutdown.  Jobs should be canceled by the plugin that scheduled them during shutdown: " + jobName; //$NON-NLS-1$
-				RuntimeLog.log(new Status(IStatus.WARNING, JobManager.PI_JOBS, JobManager.PLUGIN_ERROR, msg, null));
-				
-				// TODO the RuntimeLog.log in its current implementation won't produce a log 
-				// during this stage of shutdown. For now add a standard error output.
-				// One the logging story is improved, the System.err output below can be removed:
-				System.err.println(msg);
-			}
-		}
-
-		pool.shutdown();
-	}
-
-	/**
-	 * Indicates that a job was running, and has now finished.  Note that this method 
-	 * can be called under OutOfMemoryError conditions and thus must be paranoid 
-	 * about allocating objects.
-	 */
-	protected void endJob(InternalJob job, IStatus result, boolean notify) {
-		InternalJob blocked = null;
-		int blockedJobCount = 0;
-		long rescheduleDelay = InternalJob.T_NONE;
-		synchronized (lock) {
-			//if the job is finishing asynchronously, there is nothing more to do for now
-			if (result == Job.ASYNC_FINISH)
-				return;
-			//if job is not known then it cannot be done
-			if (job.getState() == Job.NONE)
-				return;
-			if (JobManager.DEBUG && notify)
-				JobManager.debug("Ending job: " + job); //$NON-NLS-1$
-			job.setResult(result);
-			job.setProgressMonitor(null);
-			job.setThread(null);
-			rescheduleDelay = job.getStartTime();
-			changeState(job, Job.NONE);
-			blocked = job.previous();
-			job.remove();
-
-			//add any blocked jobs back to the wait queue
-			while (blocked != null) {
-				InternalJob previous = blocked.previous();
-				changeState(blocked, Job.WAITING);
-				blockedJobCount++;
-				blocked = previous;
-			}
-		}
-		//notify queue outside sync block
-		for (int i = 0; i < blockedJobCount; i++)
-			pool.jobQueued(blocked);
-		//notify listeners outside sync block
-		final boolean reschedule = active && rescheduleDelay > InternalJob.T_NONE && job.shouldSchedule();
-		if (notify)
-			jobListeners.done((Job) job, result, reschedule);
-		//reschedule the job if requested and we are still active
-		if (reschedule)
-			schedule(job, rescheduleDelay, reschedule);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.jobs.IJobManager#endRule(org.eclipse.core.runtime.jobs.ISchedulingRule)
-	 */
-	public void endRule(ISchedulingRule rule) {
-		implicitJobs.end(rule, false);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.jobs.IJobManager#find(java.lang.String)
-	 */
-	public Job[] find(Object family) {
-		List members = select(family);
-		return (Job[]) members.toArray(new Job[members.size()]);
-	}
-
-	/**
-	 * Returns a running or blocked job whose scheduling rule conflicts with the 
-	 * scheduling rule of the given waiting job.  Returns null if there are no 
-	 * conflicting jobs.  A job can only run if there are no running jobs and no blocked
-	 * jobs whose scheduling rule conflicts with its rule.
-	 */
-	protected InternalJob findBlockingJob(InternalJob waitingJob) {
-		if (waitingJob.getRule() == null)
-			return null;
-		synchronized (lock) {
-			if (running.isEmpty())
-				return null;
-			//check the running jobs
-			boolean hasBlockedJobs = false;
-			for (Iterator it = running.iterator(); it.hasNext();) {
-				InternalJob job = (InternalJob) it.next();
-				if (waitingJob.isConflicting(job))
-					return job;
-				if (!hasBlockedJobs)
-					hasBlockedJobs = job.previous() != null;
-			}
-			//there are no blocked jobs, so we are done
-			if (!hasBlockedJobs)
-				return null;
-			//check all jobs blocked by running jobs
-			for (Iterator it = running.iterator(); it.hasNext();) {
-				InternalJob job = (InternalJob) it.next();
-				while (true) {
-					job = job.previous();
-					if (job == null)
-						break;
-					if (waitingJob.isConflicting(job))
-						return job;
-				}
-			}
-		}
-		return null;
-	}
-
-	public LockManager getLockManager() {
-		return lockManager;
-	}
-
-	private void initDebugOptions() {
-		DEBUG = JobOSGiUtils.getDefault().getBooleanDebugOption(OPTION_DEBUG_JOBS, false);
-		DEBUG_BEGIN_END = JobOSGiUtils.getDefault().getBooleanDebugOption(OPTION_DEBUG_BEGIN_END, false);
-		DEBUG_DEADLOCK = JobOSGiUtils.getDefault().getBooleanDebugOption(OPTION_DEADLOCK_ERROR, false);
-		DEBUG_LOCKS = JobOSGiUtils.getDefault().getBooleanDebugOption(OPTION_LOCKS, false);
-		DEBUG_TIMING = JobOSGiUtils.getDefault().getBooleanDebugOption(OPTION_DEBUG_JOBS_TIMING, false);
-		DEBUG_SHUTDOWN = JobOSGiUtils.getDefault().getBooleanDebugOption(OPTION_SHUTDOWN, false);
-	}
-
-	/**
-	 * Returns whether the job manager is active (has not been shutdown).
-	 */
-	protected boolean isActive() {
-		return active;
-	}
-
-	/**
-	 * Returns true if the given job is blocking the execution of a non-system
-	 * job.
-	 */
-	protected boolean isBlocking(InternalJob runningJob) {
-		synchronized (lock) {
-			//if this job isn't running, it can't be blocking anyone
-			if (runningJob.getState() != Job.RUNNING)
-				return false;
-			//if any job is queued behind this one, it is blocked by it
-			InternalJob previous = runningJob.previous();
-			while (previous != null) {
-				if (!previous.isSystem())
-					return true;
-				//implicit jobs should interrupt unless they act on behalf of system jobs
-				if (previous instanceof ThreadJob && ((ThreadJob) previous).shouldInterrupt())
-					return true;
-				previous = previous.previous();
-			}
-			//none found
-			return false;
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.jobs.IJobManager#isIdle()
-	 */
-	public boolean isIdle() {
-		synchronized (lock) {
-			return running.isEmpty() && waiting.isEmpty();
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.jobs.Job#job(org.eclipse.core.runtime.jobs.Job)
-	 */
-	protected void join(InternalJob job) {
-		final IJobChangeListener listener;
-		final Semaphore barrier;
-		synchronized (lock) {
-			int state = job.getState();
-			if (state == Job.NONE)
-				return;
-			//don't join a waiting or sleeping job when suspended (deadlock risk)
-			if (suspended && state != Job.RUNNING)
-				return;
-			//the semaphore will be released when the job is done
-			barrier = new Semaphore(null);
-			listener = new JobChangeAdapter() {
-				public void done(IJobChangeEvent event) {
-					barrier.release();
-				}
-			};
-			job.addJobChangeListener(listener);
-			//compute set of all jobs that must run before this one
-			//add a listener that removes jobs from the blocking set when they finish
-		}
-		//wait until listener notifies this thread.
-		try {
-			while (true) {
-				//notify hook to service pending syncExecs before falling asleep
-				lockManager.aboutToWait(job.getThread());
-				try {
-					if (barrier.acquire(Long.MAX_VALUE))
-						break;
-				} catch (InterruptedException e) {
-					//loop and keep trying
-				}
-			}
-		} finally {
-			lockManager.aboutToRelease();
-			job.removeJobChangeListener(listener);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see IJobManager#join(String, IProgressMonitor)
-	 */
-	public void join(final Object family, IProgressMonitor monitor) throws InterruptedException, OperationCanceledException {
-		monitor = monitorFor(monitor);
-		IJobChangeListener listener = null;
-		final Set jobs;
-		int jobCount;
-		Job blocking = null;
-		synchronized (lock) {
-			//don't join a waiting or sleeping job when suspended (deadlock risk)
-			int states = suspended ? Job.RUNNING : Job.RUNNING | Job.WAITING | Job.SLEEPING;
-			jobs = Collections.synchronizedSet(new HashSet(select(family, states)));
-			jobCount = jobs.size();
-			if (jobCount == 0)
-				return;
-			//if there is only one blocking job, use it in the blockage callback below
-			if (jobCount == 1)
-				blocking = (Job) jobs.iterator().next();
-			listener = new JobChangeAdapter() {
-				public void done(IJobChangeEvent event) {
-					//don't remove from list if job is being rescheduled
-					if (!((JobChangeEvent) event).reschedule)
-						jobs.remove(event.getJob());
-				}
-
-				//update the list of jobs if new ones are added during the join
-				public void scheduled(IJobChangeEvent event) {
-					//don't add to list if job is being rescheduled
-					if (((JobChangeEvent) event).reschedule)
-						return;
-					Job job = event.getJob();
-					if (job.belongsTo(family))
-						jobs.add(job);
-				}
-			};
-			addJobChangeListener(listener);
-		}
-		//spin until all jobs are completed
-		try {
-			monitor.beginTask(JobMessages.jobs_blocked0, jobCount);
-			monitor.subTask(NLS.bind(JobMessages.jobs_waitFamSub, Integer.toString(jobCount)));
-			reportBlocked(monitor, blocking);
-			int jobsLeft;
-			int reportedWorkDone = 0;
-			while ((jobsLeft = jobs.size()) > 0) {
-				//don't let there be negative work done if new jobs have
-				//been added since the join began
-				int actualWorkDone = Math.max(0, jobCount - jobsLeft);
-				if (reportedWorkDone < actualWorkDone) {
-					monitor.worked(actualWorkDone - reportedWorkDone);
-					reportedWorkDone = actualWorkDone;
-					monitor.subTask(NLS.bind(JobMessages.jobs_waitFamSub, Integer.toString(jobsLeft)));
-				}
-				if (Thread.interrupted())
-					throw new InterruptedException();
-				if (monitor.isCanceled())
-					throw new OperationCanceledException();
-				//notify hook to service pending syncExecs before falling asleep
-				lockManager.aboutToWait(null);
-				Thread.sleep(100);
-			}
-		} finally {
-			removeJobChangeListener(listener);
-			reportUnblocked(monitor);
-			monitor.done();
-		}
-	}
-
-	/**
-	 * Returns a non-null progress monitor instance.  If the monitor is null,
-	 * returns the default monitor supplied by the progress provider, or a 
-	 * NullProgressMonitor if no default monitor is available.
-	 */
-	private IProgressMonitor monitorFor(IProgressMonitor monitor) {
-		if (monitor == null || (monitor instanceof NullProgressMonitor)) {
-			if (progressProvider != null) {
-				try {
-					monitor = progressProvider.getDefaultMonitor();
-				} catch (Exception e) {
-					String msg = NLS.bind(JobMessages.meta_pluginProblems, JobManager.PI_JOBS);
-					RuntimeLog.log(new Status(IStatus.ERROR, JobManager.PI_JOBS, JobManager.PLUGIN_ERROR, msg, e));
-				}
-			}
-		}
-
-		if (monitor == null)
-			return new NullProgressMonitor();
-		return monitor;
-	}
-
-	/* (non-Javadoc)
-	 * @see IJobManager#newLock(java.lang.String)
-	 */
-	public ILock newLock() {
-		return lockManager.newLock();
-	}
-
-	/**
-	 * Removes and returns the first waiting job in the queue. Returns null if there
-	 * are no items waiting in the queue.  If an item is removed from the queue,
-	 * it is moved to the running jobs list.
-	 */
-	private Job nextJob() {
-		synchronized (lock) {
-			//do nothing if the job manager is suspended
-			if (suspended)
-				return null;
-			//tickle the sleep queue to see if anyone wakes up
-			long now = System.currentTimeMillis();
-			InternalJob job = sleeping.peek();
-			while (job != null && job.getStartTime() < now) {
-				job.setStartTime(now + delayFor(job.getPriority()));
-				changeState(job, Job.WAITING);
-				job = sleeping.peek();
-			}
-			//process the wait queue until we find a job whose rules are satisfied.
-			while ((job = waiting.peek()) != null) {
-				InternalJob blocker = findBlockingJob(job);
-				if (blocker == null)
-					break;
-				//queue this job after the job that's blocking it
-				changeState(job, InternalJob.BLOCKED);
-				//assert job does not already belong to some other data structure
-				Assert.isTrue(job.next() == null);
-				Assert.isTrue(job.previous() == null);
-				blocker.addLast(job);
-			}
-			//the job to run must be in the running list before we exit
-			//the sync block, otherwise two jobs with conflicting rules could start at once
-			if (job != null) {
-				changeState(job, InternalJob.ABOUT_TO_RUN);
-				if (JobManager.DEBUG)
-					JobManager.debug("Starting job: " + job); //$NON-NLS-1$
-			}
-			return (Job) job;
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.jobs.IJobManager#removeJobListener(org.eclipse.core.runtime.jobs.IJobChangeListener)
-	 */
-	public void removeJobChangeListener(IJobChangeListener listener) {
-		jobListeners.remove(listener);
-	}
-
-	/**
-	 * Report to the progress monitor that this thread is blocked, supplying
-	 * an information message, and if possible the job that is causing the blockage.
-	 * Important: An invocation of this method MUST be followed eventually be
-	 * an invocation of reportUnblocked.
-	 * @param monitor The monitor to report blocking to
-	 * @param blockingJob The job that is blocking this thread, or <code>null</code>
-	 * @see #reportUnblocked
-	 */
-	final void reportBlocked(IProgressMonitor monitor, InternalJob blockingJob) {
-		if (!(monitor instanceof IProgressMonitorWithBlocking))
-			return;
-		IStatus reason;
-		if (blockingJob == null || blockingJob instanceof ThreadJob || blockingJob.isSystem()) {
-			reason = new Status(IStatus.INFO, JobManager.PI_JOBS, 1, JobMessages.jobs_blocked0, null);
-		} else {
-			String msg = NLS.bind(JobMessages.jobs_blocked1, blockingJob.getName());
-			reason = new JobStatus(IStatus.INFO, (Job) blockingJob, msg);
-		}
-		((IProgressMonitorWithBlocking) monitor).setBlocked(reason);
-	}
-
-	/**
-	 * Reports that this thread was blocked, but is no longer blocked and is able
-	 * to proceed.
-	 * @param monitor The monitor to report unblocking to.
-	 * @see #reportBlocked
-	 */
-	final void reportUnblocked(IProgressMonitor monitor) {
-		if (monitor instanceof IProgressMonitorWithBlocking)
-			((IProgressMonitorWithBlocking) monitor).clearBlocked();
-	}
-
-	/*(non-Javadoc)
-	 * @see org.eclipse.core.runtime.jobs.IJobManager#resume()
-	 */
-	public final void resume() {
-		synchronized (lock) {
-			suspended = false;
-			//poke the job pool
-			pool.jobQueued(null);
-		}
-	}
-
-	/** (non-Javadoc)
-	 * @deprecated this method should not be used
-	 * @see org.eclipse.core.runtime.jobs.IJobManager#resume(org.eclipse.core.runtime.jobs.ISchedulingRule)
-	 */
-	public final void resume(ISchedulingRule rule) {
-		implicitJobs.resume(rule);
-	}
-
-	/**
-	 * Attempts to immediately start a given job.  Returns true if the job was
-	 * successfully started, and false if it could not be started immediately
-	 * due to a currently running job with a conflicting rule.  Listeners will never
-	 * be notified of jobs that are run in this way.
-	 */
-	protected boolean runNow(InternalJob job) {
-		synchronized (lock) {
-			//cannot start if there is a conflicting job
-			if (findBlockingJob(job) != null)
-				return false;
-			changeState(job, Job.RUNNING);
-			job.setProgressMonitor(new NullProgressMonitor());
-			job.run(null);
-		}
-		return true;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.jobs.Job#schedule(long)
-	 */
-	protected void schedule(InternalJob job, long delay, boolean reschedule) {
-		if (!active)
-			throw new IllegalStateException("Job manager has been shut down."); //$NON-NLS-1$
-		Assert.isNotNull(job, "Job is null"); //$NON-NLS-1$
-		Assert.isLegal(delay >= 0, "Scheduling delay is negative"); //$NON-NLS-1$
-		synchronized (lock) {
-			//if the job is already running, set it to be rescheduled when done
-			if (job.getState() == Job.RUNNING) {
-				job.setStartTime(delay);
-				return;
-			}
-			//can't schedule a job that is waiting or sleeping
-			if (job.internalGetState() != Job.NONE)
-				return;
-			if (JobManager.DEBUG)
-				JobManager.debug("Scheduling job: " + job); //$NON-NLS-1$
-			//remember that we are about to schedule the job
-			//to prevent multiple schedule attempts from succeeding (bug 68452)
-			changeState(job, InternalJob.ABOUT_TO_SCHEDULE);
-		}
-		//notify listeners outside sync block
-		jobListeners.scheduled((Job) job, delay, reschedule);
-		//schedule the job
-		doSchedule(job, delay);
-		//call the pool outside sync block to avoid deadlock
-		pool.jobQueued(job);
-	}
-
-	/**
-	 * Adds all family members in the list of jobs to the collection
-	 */
-	private void select(List members, Object family, InternalJob firstJob, int stateMask) {
-		if (firstJob == null)
-			return;
-		InternalJob job = firstJob;
-		do {
-			//note that job state cannot be NONE at this point
-			if ((family == null || job.belongsTo(family)) && ((job.getState() & stateMask) != 0))
-				members.add(job);
-			job = job.previous();
-		} while (job != null && job != firstJob);
-	}
-
-	/**
-	 * Returns a list of all jobs known to the job manager that belong to the given family.
-	 */
-	private List select(Object family) {
-		return select(family, Job.WAITING | Job.SLEEPING | Job.RUNNING);
-	}
-
-	/**
-	 * Returns a list of all jobs known to the job manager that belong to the given 
-	 * family and are in one of the provided states.
-	 */
-	private List select(Object family, int stateMask) {
-		List members = new ArrayList();
-		synchronized (lock) {
-			if ((stateMask & Job.RUNNING) != 0) {
-				for (Iterator it = running.iterator(); it.hasNext();) {
-					select(members, family, (InternalJob) it.next(), stateMask);
-				}
-			}
-			if ((stateMask & Job.WAITING) != 0)
-				select(members, family, waiting.peek(), stateMask);
-			if ((stateMask & Job.SLEEPING) != 0)
-				select(members, family, sleeping.peek(), stateMask);
-		}
-		return members;
-	}
-
-	/* (non-Javadoc)
-	 * @see IJobManager#setLockListener(LockListener)
-	 */
-	public void setLockListener(LockListener listener) {
-		lockManager.setLockListener(listener);
-	}
-
-	/**
-	 * Changes a job priority.
-	 */
-	protected void setPriority(InternalJob job, int newPriority) {
-		synchronized (lock) {
-			int oldPriority = job.getPriority();
-			if (oldPriority == newPriority)
-				return;
-			job.internalSetPriority(newPriority);
-			//if the job is waiting to run, re-shuffle the queue
-			if (job.getState() == Job.WAITING) {
-				long oldStart = job.getStartTime();
-				job.setStartTime(oldStart + (delayFor(newPriority) - delayFor(oldPriority)));
-				waiting.resort(job);
-			}
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see IJobManager#setProgressProvider(IProgressProvider)
-	 */
-	public void setProgressProvider(ProgressProvider provider) {
-		progressProvider = provider;
-	}
-
-	/* (non-Javadoc)
-	 * @see Job#setRule
-	 */
-	public void setRule(InternalJob job, ISchedulingRule rule) {
-		synchronized (lock) {
-			//cannot change the rule of a job that is already running
-			Assert.isLegal(job.getState() == Job.NONE);
-			validateRule(rule);
-			job.internalSetRule(rule);
-		}
-	}
-
-	/**
-	 * Puts a job to sleep. Returns true if the job was successfully put to sleep.
-	 */
-	protected boolean sleep(InternalJob job) {
-		synchronized (lock) {
-			switch (job.getState()) {
-				case Job.RUNNING :
-					//cannot be paused if it is already running (as opposed to ABOUT_TO_RUN)
-					if (job.internalGetState() == Job.RUNNING)
-						return false;
-					//job hasn't started running yet (aboutToRun listener)
-					break;
-				case Job.SLEEPING :
-					//update the job wake time
-					job.setStartTime(InternalJob.T_INFINITE);
-					//change state again to re-shuffle the sleep queue
-					changeState(job, Job.SLEEPING);
-					return true;
-				case Job.NONE :
-					return true;
-				case Job.WAITING :
-					//put the job to sleep
-					break;
-			}
-			job.setStartTime(InternalJob.T_INFINITE);
-			changeState(job, Job.SLEEPING);
-		}
-		jobListeners.sleeping((Job) job);
-		return true;
-	}
-
-	/* (non-Javadoc)
-	 * @see IJobManager#sleep(String)
-	 */
-	public void sleep(Object family) {
-		//don't synchronize because sleep calls listeners
-		for (Iterator it = select(family).iterator(); it.hasNext();) {
-			sleep((InternalJob) it.next());
-		}
-	}
-
-	/**
-	 * Returns the estimated time in milliseconds before the next job is scheduled
-	 * to wake up. The result may be negative.  Returns InternalJob.T_INFINITE if
-	 * there are no sleeping or waiting jobs.
-	 */
-	protected long sleepHint() {
-		synchronized (lock) {
-			//wait forever if job manager is suspended
-			if (suspended)
-				return InternalJob.T_INFINITE;
-			if (!waiting.isEmpty())
-				return 0L;
-			//return the anticipated time that the next sleeping job will wake
-			InternalJob next = sleeping.peek();
-			if (next == null)
-				return InternalJob.T_INFINITE;
-			return next.getStartTime() - System.currentTimeMillis();
-		}
-	}
-
-	/**
-	 * Returns the next job to be run, or null if no jobs are waiting to run.
-	 * The worker must call endJob when the job is finished running.  
-	 */
-	protected Job startJob() {
-		Job job = null;
-		while (true) {
-			job = nextJob();
-			if (job == null)
-				return null;
-			//must perform this outside sync block because it is third party code
-			if (job.shouldRun()) {
-				//check for listener veto
-				jobListeners.aboutToRun(job);
-				//listeners may have canceled or put the job to sleep
-				synchronized (lock) {
-					if (job.getState() == Job.RUNNING) {
-						InternalJob internal = job;
-						if (internal.getProgressMonitor() == null)
-							internal.setProgressMonitor(createMonitor(job));
-						//change from ABOUT_TO_RUN to RUNNING
-						internal.internalSetState(Job.RUNNING);
-						break;
-					}
-				}
-			}
-			if (job.getState() != Job.SLEEPING) {
-				//job has been vetoed or canceled, so mark it as done
-				endJob(job, Status.CANCEL_STATUS, true);
-				continue;
-			}
-		}
-		jobListeners.running(job);
-		return job;
-
-	}
-
-	/* non-Javadoc)
-	 * @see org.eclipse.core.runtime.jobs.IJobManager#suspend()
-	 */
-	public final void suspend() {
-		synchronized (lock) {
-			suspended = true;
-		}
-	}
-
-	/** (non-Javadoc)
-	 * @deprecated this method should not be used
-	 * @see org.eclipse.core.runtime.jobs.IJobManager#suspend(org.eclipse.core.runtime.jobs.ISchedulingRule, org.eclipse.core.runtime.IProgressMonitor)
-	 */
-	public final void suspend(ISchedulingRule rule, IProgressMonitor monitor) {
-		Assert.isNotNull(rule);
-		implicitJobs.suspend(rule, monitorFor(monitor));
-	}
-
-	/* non-Javadoc)
-	 * @see org.eclipse.core.runtime.jobs.IJobManager#transferRule()
-	 */
-	public void transferRule(ISchedulingRule rule, Thread destinationThread) {
-		implicitJobs.transfer(rule, destinationThread);
-	}
-
-	/**
-	 * Validates that the given scheduling rule obeys the constraints of
-	 * scheduling rules as described in the <code>ISchedulingRule</code>
-	 * javadoc specification.
-	 */
-	private void validateRule(ISchedulingRule rule) {
-		//null rule always valid
-		if (rule == null)
-			return;
-		//contains method must be reflexive
-		Assert.isLegal(rule.contains(rule));
-		//contains method must return false when given an unknown rule
-		Assert.isLegal(!rule.contains(nullRule));
-		//isConflicting method must be reflexive
-		Assert.isLegal(rule.isConflicting(rule));
-		//isConflicting method must return false when given an unknown rule
-		Assert.isLegal(!rule.isConflicting(nullRule));
-	}
-
-	/* (non-Javadoc)
-	 * @see Job#wakeUp(long)
-	 */
-	protected void wakeUp(InternalJob job, long delay) {
-		Assert.isLegal(delay >= 0, "Scheduling delay is negative"); //$NON-NLS-1$
-		synchronized (lock) {
-			//cannot wake up if it is not sleeping
-			if (job.getState() != Job.SLEEPING)
-				return;
-			doSchedule(job, delay);
-		}
-		//call the pool outside sync block to avoid deadlock
-		pool.jobQueued(job);
-
-		//only notify of wake up if immediate
-		if (delay == 0)
-			jobListeners.awake((Job) job);
-	}
-
-	/* (non-Javadoc)
-	 * @see IJobFamily#wakeUp(String)
-	 */
-	public void wakeUp(Object family) {
-		//don't synchronize because wakeUp calls listeners
-		for (Iterator it = select(family).iterator(); it.hasNext();) {
-			wakeUp((InternalJob) it.next(), 0L);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobMessages.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobMessages.java
deleted file mode 100644
index 562d750..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobMessages.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others. All rights reserved.   This
- * program and the accompanying materials are made available under the terms of
- * the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: 
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.core.internal.jobs;
-
-import java.util.Date;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * Job plugin message catalog
- */
-public class JobMessages extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.core.internal.jobs.messages"; //$NON-NLS-1$
-
-	// Job Manager and Locks
-	public static String jobs_blocked0;
-	public static String jobs_blocked1;
-	public static String jobs_internalError;
-	public static String jobs_waitFamSub;
-
-	// metadata
-	public static String meta_pluginProblems;
-
-	static {
-		// load message values from bundle file
-		reloadMessages();
-	}
-
-	public static void reloadMessages() {
-		NLS.initializeMessages(BUNDLE_NAME, JobMessages.class);
-	}
-
-	/**
-	 * Print a debug message to the console. 
-	 * Pre-pend the message with the current date and the name of the current thread.
-	 */
-	public static void message(String message) {
-		StringBuffer buffer = new StringBuffer();
-		buffer.append(new Date(System.currentTimeMillis()));
-		buffer.append(" - ["); //$NON-NLS-1$
-		buffer.append(Thread.currentThread().getName());
-		buffer.append("] "); //$NON-NLS-1$
-		buffer.append(message);
-		System.out.println(buffer.toString());
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobOSGiUtils.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobOSGiUtils.java
deleted file mode 100644
index 40dc3da..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobOSGiUtils.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.jobs;
-
-import org.eclipse.osgi.service.debug.DebugOptions;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.service.packageadmin.PackageAdmin;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * The class contains a set of helper methods for the runtime Jobs plugin.
- * The following utility methods are supplied:
- * - provides access to debug options
- * - provides some bundle discovery functionality
- * 
- * The closeServices() method should be called before the plugin is stopped. 
- * 
- * @since org.eclipse.core.jobs 3.2
- */
-public class JobOSGiUtils {
-	private ServiceTracker debugTracker = null;
-	private ServiceTracker bundleTracker = null;
-
-	private static final JobOSGiUtils singleton = new JobOSGiUtils();
-
-	/**
-	 * Accessor for the singleton instance
-	 * @return The JobOSGiUtils instance
-	 */
-	public static JobOSGiUtils getDefault() {
-		return singleton;
-	}
-
-	/**
-	 * Private constructor to block instance creation.
-	 */
-	private JobOSGiUtils() {
-		initServices();
-	}
-
-	private void initServices() {
-		BundleContext context = JobActivator.getContext();
-		if (context == null) {
-			if (JobManager.DEBUG)
-				JobMessages.message("JobsOSGiUtils called before plugin started"); //$NON-NLS-1$
-			return;
-		}
-
-		debugTracker = new ServiceTracker(context, DebugOptions.class.getName(), null);
-		debugTracker.open();
-
-		bundleTracker = new ServiceTracker(context, PackageAdmin.class.getName(), null);
-		bundleTracker.open();
-	}
-
-	void closeServices() {
-		if (debugTracker != null) {
-			debugTracker.close();
-			debugTracker = null;
-		}
-		if (bundleTracker != null) {
-			bundleTracker.close();
-			bundleTracker = null;
-		}
-	}
-
-	public boolean getBooleanDebugOption(String option, boolean defaultValue) {
-		if (debugTracker == null) {
-			if (JobManager.DEBUG)
-				JobMessages.message("Debug tracker is not set"); //$NON-NLS-1$
-			return defaultValue;
-		}
-		DebugOptions options = (DebugOptions) debugTracker.getService();
-		if (options != null) {
-			String value = options.getOption(option);
-			if (value != null)
-				return value.equalsIgnoreCase("true"); //$NON-NLS-1$
-		}
-		return defaultValue;
-	}
-
-	/**
-	 * Returns the bundle id of the bundle that contains the provided object, or
-	 * <code>null</code> if the bundle could not be determined.
-	 */
-	public String getBundleId(Object object) {
-		if (bundleTracker == null) {
-			if (JobManager.DEBUG)
-				JobMessages.message("Bundle tracker is not set"); //$NON-NLS-1$
-			return null;
-		}
-		PackageAdmin packageAdmin = (PackageAdmin) bundleTracker.getService();
-		if (object == null)
-			return null;
-		if (packageAdmin == null)
-			return null;
-		Bundle source = packageAdmin.getBundle(object.getClass());
-		if (source != null && source.getSymbolicName() != null)
-			return source.getSymbolicName();
-		return null;
-	}
-
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobQueue.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobQueue.java
deleted file mode 100644
index aa12cd1..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobQueue.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.jobs;
-
-import org.eclipse.core.runtime.*;
-
-/**
- * A linked list based priority queue. Either the elements in the queue must
- * implement Comparable, or a Comparator must be provided.
- */
-public class JobQueue {
-	/**
-	 * The dummy entry sits between the head and the tail of the queue.
-	 * dummy.previous() is the head, and dummy.next() is the tail.
-	 */
-	private final InternalJob dummy;
-
-	/**
-	 * If true, conflicting jobs will be allowed to overtake others in the
-	 * queue that have lower priority. If false, higher priority jumps can only
-	 * move up the queue by overtaking jobs that they don't conflict with.
-	 */
-	private boolean allowConflictOvertaking;
-
-	/**
-	 * Create a new job queue. 
-	 */
-	public JobQueue(boolean allowConflictOvertaking) {
-		//compareTo on dummy is never called
-		dummy = new InternalJob("Queue-Head") {//$NON-NLS-1$
-			public IStatus run(IProgressMonitor m) {
-				return Status.OK_STATUS;
-			}
-		};
-		dummy.setNext(dummy);
-		dummy.setPrevious(dummy);
-		this.allowConflictOvertaking = allowConflictOvertaking;
-	}
-
-	/** 
-	 * remove all elements 
-	 */
-	public void clear() {
-		dummy.setNext(dummy);
-		dummy.setPrevious(dummy);
-	}
-
-	/**
-	 * Return and remove the element with highest priority, or null if empty. 
-	 */
-	public InternalJob dequeue() {
-		InternalJob toRemove = dummy.previous();
-		if (toRemove == dummy)
-			return null;
-		return toRemove.remove();
-	}
-
-	/**
-	 * Adds an item to the queue 
-	 */
-	public void enqueue(InternalJob newEntry) {
-		//assert new entry is does not already belong to some other data structure
-		Assert.isTrue(newEntry.next() == null);
-		Assert.isTrue(newEntry.previous() == null);
-		InternalJob tail = dummy.next();
-		//overtake lower priority jobs. Only overtake conflicting jobs if allowed to
-		while (tail != dummy && tail.compareTo(newEntry) < 0 && (allowConflictOvertaking || !newEntry.isConflicting(tail)))
-			tail = tail.next();
-		//new entry is smaller than tail
-		final InternalJob tailPrevious = tail.previous();
-		newEntry.setNext(tail);
-		newEntry.setPrevious(tailPrevious);
-		tailPrevious.setNext(newEntry);
-		tail.setPrevious(newEntry);
-	}
-
-	/**
-	 * Removes the given element from the queue. 
-	 */
-	public void remove(InternalJob toRemove) {
-		toRemove.remove();
-		//previous of toRemove might now bubble up
-	}
-
-	/**
-	 * The given object has changed priority. Reshuffle the heap until it is
-	 * valid.
-	 */
-	public void resort(InternalJob entry) {
-		remove(entry);
-		enqueue(entry);
-	}
-
-	/**
-	 * Returns true if the queue is empty, and false otherwise. 
-	 */
-	public boolean isEmpty() {
-		return dummy.next() == dummy;
-	}
-
-	/** 
-	 * Return greatest element without removing it, or null if empty 
-	 */
-	public InternalJob peek() {
-		return dummy.previous() == dummy ? null : dummy.previous();
-	}
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobStatus.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobStatus.java
deleted file mode 100644
index 4e9b56b..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobStatus.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.jobs;
-
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.IJobStatus;
-import org.eclipse.core.runtime.jobs.Job;
-
-/**
- * Standard implementation of the IJobStatus interface.
- */
-public class JobStatus extends Status implements IJobStatus {
-	private Job job;
-
-	/**
-	 * Creates a new job status with no interesting error code or exception.
-	 * @param severity
-	 * @param job
-	 * @param message
-	 */
-	public JobStatus(int severity, Job job, String message) {
-		super(severity, JobManager.PI_JOBS, 1, message, null);
-		this.job = job;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.jobs.IJobStatus#getJob()
-	 */
-	public Job getJob() {
-		return job;
-	}
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/LockManager.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/LockManager.java
deleted file mode 100644
index 9fc3cd6..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/LockManager.java
+++ /dev/null
@@ -1,286 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.jobs;
-
-import java.util.HashMap;
-import java.util.Stack;
-import org.eclipse.core.internal.runtime.RuntimeLog;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.core.runtime.jobs.LockListener;
-
-/**
- * Stores the only reference to the graph that contains all the known
- * relationships between locks, rules, and the threads that own them.
- * Synchronizes all access to the graph on the only instance that exists in this class.
- * 
- * Also stores the state of suspended locks so that they can be re-acquired with 
- * the proper lock depth. 
- */
-public class LockManager {
-	/**
-	 * This class captures the state of suspended locks.
-	 * Locks are suspended if deadlock is detected.
-	 */
-	private static class LockState {
-		private int depth;
-		private OrderedLock lock;
-
-		/**
-		 * Suspends ownership of the given lock, and returns the saved state.
-		 */
-		protected static LockState suspend(OrderedLock lock) {
-			LockState state = new LockState();
-			state.lock = lock;
-			state.depth = lock.forceRelease();
-			return state;
-		}
-
-		/**
-		 * Re-acquires a suspended lock and reverts to the correct lock depth.
-		 */
-		public void resume() {
-			//spin until the lock is successfully acquired
-			//NOTE: spinning here allows the UI thread to service pending syncExecs
-			//if the UI thread is waiting to acquire a lock.
-			while (true) {
-				try {
-					if (lock.acquire(Long.MAX_VALUE))
-						break;
-				} catch (InterruptedException e) {
-					//ignore and loop
-				}
-			}
-			lock.setDepth(depth);
-		}
-	}
-
-	//the lock listener for this lock manager
-	protected LockListener lockListener;
-	/* 
-	 * The internal data structure that stores all the relationships 
-	 * between the locks (or rules) and the threads that own them.
-	 */
-	private DeadlockDetector locks = new DeadlockDetector();
-	/* 
-	 * Stores thread - stack pairs where every entry in the stack is an array 
-	 * of locks that were suspended while the thread was acquiring more locks
-	 * (a stack is needed because when a thread tries to re-aquire suspended locks,
-	 * it can cause deadlock, and some locks it owns can be suspended again)
-	 */
-	private HashMap suspendedLocks = new HashMap();
-
-	public LockManager() {
-		super();
-	}
-
-	/* (non-Javadoc)
-	 * Method declared on LockListener
-	 */
-	public void aboutToRelease() {
-		if (lockListener == null)
-			return;
-		try {
-			lockListener.aboutToRelease();
-		} catch (Exception e) {
-			handleException(e);
-		} catch (LinkageError e) {
-			handleException(e);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * Method declared on LockListener
-	 */
-	public boolean aboutToWait(Thread lockOwner) {
-		if (lockListener == null)
-			return false;
-		try {
-			return lockListener.aboutToWait(lockOwner);
-		} catch (Exception e) {
-			handleException(e);
-		} catch (LinkageError e) {
-			handleException(e);
-		}
-		return false;
-	}
-
-	/**
-	 * This thread has just acquired a lock.  Update graph.
-	 */
-	void addLockThread(Thread thread, ISchedulingRule lock) {
-		if (locks == null)
-			return;
-		try {
-			synchronized (locks) {
-				locks.lockAcquired(thread, lock);
-			}
-		} catch (Exception e) {
-			handleInternalError(e);
-		}
-	}
-
-	/**
-	 * This thread has just been refused a lock.  Update graph and check for deadlock.
-	 */
-	void addLockWaitThread(Thread thread, ISchedulingRule lock) {
-		if (locks == null)
-			return;
-		try {
-			Deadlock found = null;
-			synchronized (locks) {
-				found = locks.lockWaitStart(thread, lock);
-			}
-			if (found == null)
-				return;
-			// if deadlock was detected, the found variable will contain all the information about it,
-			// including which locks to suspend for which thread to resolve the deadlock.
-			ISchedulingRule[] toSuspend = found.getLocks();
-			LockState[] suspended = new LockState[toSuspend.length];
-			for (int i = 0; i < toSuspend.length; i++)
-				suspended[i] = LockState.suspend((OrderedLock) toSuspend[i]);
-			synchronized (suspendedLocks) {
-				Stack prevLocks = (Stack) suspendedLocks.get(found.getCandidate());
-				if (prevLocks == null)
-					prevLocks = new Stack();
-				prevLocks.push(suspended);
-				suspendedLocks.put(found.getCandidate(), prevLocks);
-			}
-		} catch (Exception e) {
-			handleInternalError(e);
-		}
-	}
-
-	/**
-	 * Handles exceptions that occur while calling third party code from within the
-	 * LockManager. This is essentially an in-lined version of Platform.run(ISafeRunnable)
-	 */
-	private static void handleException(Throwable e) {
-		IStatus status;
-		if (e instanceof CoreException) {
-			//logged message should not be translated
-			status = new MultiStatus(JobManager.PI_JOBS, JobManager.PLUGIN_ERROR, "LockManager.handleException", e); //$NON-NLS-1$
-			((MultiStatus) status).merge(((CoreException) e).getStatus());
-		} else {
-			status = new Status(IStatus.ERROR, JobManager.PI_JOBS, JobManager.PLUGIN_ERROR, "LockManager.handleException", e); //$NON-NLS-1$
-		}
-		RuntimeLog.log(status);
-	}
-
-	/**
-	 * There was an internal error in the deadlock detection code.  Shut the entire
-	 * thing down to prevent further errors.  Recovery is too complex as it
-	 * requires freezing all threads and inferring the present lock state.
-	 */
-	private void handleInternalError(Throwable t) {
-		try {
-			handleException(t);
-			locks.toDebugString();
-		} catch (Exception e2) {
-			//ignore failure to log or to create the debug string
-		}
-		//discard the deadlock detector for good
-		locks = null;
-	}
-
-	/**
-	 * Returns true IFF the underlying graph is empty.
-	 * For debugging purposes only.
-	 */
-	public boolean isEmpty() {
-		return locks.isEmpty();
-	}
-
-	/**
-	 * Returns true IFF this thread either owns, or is waiting for, any locks or rules.
-	 */
-	public boolean isLockOwner() {
-		//all job threads have to be treated as lock owners because UI thread 
-		//may try to join a job
-		Thread current = Thread.currentThread();
-		if (current instanceof Worker)
-			return true;
-		if (locks == null)
-			return false;
-		synchronized (locks) {
-			return locks.contains(Thread.currentThread());
-		}
-	}
-
-	/**
-	 * Creates and returns a new lock.
-	 */
-	public synchronized OrderedLock newLock() {
-		return new OrderedLock(this);
-	}
-
-	/**
-	 * Releases all the acquires that were called on the given rule. Needs to be called only once.
-	 */
-	void removeLockCompletely(Thread thread, ISchedulingRule rule) {
-		if (locks == null)
-			return;
-		try {
-			synchronized (locks) {
-				locks.lockReleasedCompletely(thread, rule);
-			}
-		} catch (Exception e) {
-			handleInternalError(e);
-		}
-	}
-
-	/**
-	 * This thread has just released a lock.  Update graph.
-	 */
-	void removeLockThread(Thread thread, ISchedulingRule lock) {
-		try {
-			synchronized (locks) {
-				locks.lockReleased(thread, lock);
-			}
-		} catch (Exception e) {
-			handleInternalError(e);
-		}
-	}
-
-	/**
-	 * This thread has just stopped waiting for a lock. Update graph.
-	 */
-	void removeLockWaitThread(Thread thread, ISchedulingRule lock) {
-		try {
-			synchronized (locks) {
-				locks.lockWaitStop(thread, lock);
-			}
-		} catch (Exception e) {
-			handleInternalError(e);
-		}
-	}
-
-	/**
-	 * Resumes all the locks that were suspended while this thread was waiting to acquire another lock.
-	 */
-	void resumeSuspendedLocks(Thread owner) {
-		LockState[] toResume;
-		synchronized (suspendedLocks) {
-			Stack prevLocks = (Stack) suspendedLocks.get(owner);
-			if (prevLocks == null)
-				return;
-			toResume = (LockState[]) prevLocks.pop();
-			if (prevLocks.empty())
-				suspendedLocks.remove(owner);
-		}
-		for (int i = 0; i < toResume.length; i++)
-			toResume[i].resume();
-	}
-
-	public void setLockListener(LockListener listener) {
-		this.lockListener = listener;
-	}
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ObjectMap.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ObjectMap.java
deleted file mode 100644
index 4564990..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ObjectMap.java
+++ /dev/null
@@ -1,329 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.jobs;
-
-import java.util.*;
-
-/**
- * A specialized map implementation that is optimized for a small set of object
- * keys.
- * 
- * Implemented as a single array that alternates keys and values.
- * 
- * Note: This class is copied from org.eclipse.core.resources
- */
-public class ObjectMap implements Map {
-	// 8 attribute keys, 8 attribute values
-	protected static final int DEFAULT_SIZE = 16;
-	protected static final int GROW_SIZE = 10;
-	protected int count = 0;
-	protected Object[] elements = null;
-
-	/**
-	 * Creates a new object map.
-	 */
-	public ObjectMap() {
-		this(DEFAULT_SIZE);
-	}
-
-	/**
-	 * Creates a new object map.
-	 * 
-	 * @param initialCapacity
-	 *                  The initial number of elements that will fit in the map.
-	 */
-	public ObjectMap(int initialCapacity) {
-		elements = new Object[Math.max(initialCapacity * 2, 0)];
-	}
-
-	/**
-	 * Creates a new object map of the same size as the given map and populate
-	 * it with the key/attribute pairs found in the map.
-	 * 
-	 * @param map
-	 *                  The entries in the given map will be added to the new map.
-	 */
-	public ObjectMap(Map map) {
-		this(map.size());
-		putAll(map);
-	}
-
-	/**
-	 * @see Map#clear()
-	 */
-	public void clear() {
-		elements = null;
-		count = 0;
-	}
-
-	/**
-	 * @see java.lang.Object#clone()
-	 */
-	public Object clone() {
-		return new ObjectMap(this);
-	}
-
-	/**
-	 * @see Map#containsKey(java.lang.Object)
-	 */
-	public boolean containsKey(Object key) {
-		if (elements == null || count == 0)
-			return false;
-		for (int i = 0; i < elements.length; i = i + 2)
-			if (elements[i] != null && elements[i].equals(key))
-				return true;
-		return false;
-	}
-
-	/**
-	 * @see Map#containsValue(java.lang.Object)
-	 */
-	public boolean containsValue(Object value) {
-		if (elements == null || count == 0)
-			return false;
-		for (int i = 1; i < elements.length; i = i + 2)
-			if (elements[i] != null && elements[i].equals(value))
-				return true;
-		return false;
-	}
-
-	/**
-	 * @see Map#entrySet()
-	 *  
-	 * Note: This implementation does not conform properly to the
-	 * specification in the Map interface. The returned collection will not
-	 * be bound to this map and will not remain in sync with this map.
-	 */
-	public Set entrySet() {
-		return toHashMap().entrySet();
-	}
-
-	/**
-	 * @see Object#equals(java.lang.Object)
-	 */
-	public boolean equals(Object o) {
-		if (!(o instanceof Map))
-			return false;
-		Map other = (Map) o;
-		//must be same size
-		if (count != other.size())
-			return false;
-		//keysets must be equal
-		if (!keySet().equals(other.keySet()))
-			return false;
-		//values for each key must be equal
-		for (int i = 0; i < elements.length; i = i + 2) {
-			if (elements[i] != null && (!elements[i + 1].equals(other.get(elements[i]))))
-				return false;
-		}
-		return true;
-	}
-
-	/**
-	 * @see Map#get(java.lang.Object)
-	 */
-	public Object get(Object key) {
-		if (elements == null || count == 0)
-			return null;
-		for (int i = 0; i < elements.length; i = i + 2)
-			if (elements[i] != null && elements[i].equals(key))
-				return elements[i + 1];
-		return null;
-	}
-
-	/**
-	 * The capacity of the map has been exceeded, grow the array by GROW_SIZE to
-	 * accomodate more entries.
-	 */
-	protected void grow() {
-		Object[] expanded = new Object[elements.length + GROW_SIZE];
-		System.arraycopy(elements, 0, expanded, 0, elements.length);
-		elements = expanded;
-	}
-
-	/**
-	 * @see Object#hashCode()
-	 */
-	public int hashCode() {
-		int hash = 0;
-		for (int i = 0; i < elements.length; i = i + 2) {
-			if (elements[i] != null) {
-				hash += elements[i].hashCode();
-			}
-		}
-		return hash;
-	}
-
-	/**
-	 * @see Map#isEmpty()
-	 */
-	public boolean isEmpty() {
-		return count == 0;
-	}
-
-	/**
-	 * Returns all keys in this table as an array.
-	 */
-	public String[] keys() {
-		String[] result = new String[count];
-		int next = 0;
-		for (int i = 0; i < elements.length; i = i + 2)
-			if (elements[i] != null)
-				result[next++] = (String) elements[i];
-		return result;
-	}
-
-	/**
-	 * @see Map#keySet() 
-	 * 
-	 * Note: This implementation does not conform properly to the
-	 * specification in the Map interface. The returned collection will not
-	 * be bound to this map and will not remain in sync with this map.
-	 */
-	public Set keySet() {
-		Set result = new HashSet(size());
-		for (int i = 0; i < elements.length; i = i + 2) {
-			if (elements[i] != null) {
-				result.add(elements[i]);
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * @see Map#put(java.lang.Object, java.lang.Object)
-	 */
-	public Object put(Object key, Object value) {
-		if (key == null)
-			throw new NullPointerException();
-		if (value == null)
-			return remove(key);
-
-		// handle the case where we don't have any attributes yet
-		if (elements == null)
-			elements = new Object[DEFAULT_SIZE];
-		if (count == 0) {
-			elements[0] = key;
-			elements[1] = value;
-			count++;
-			return null;
-		}
-
-		int emptyIndex = -1;
-		// replace existing value if it exists
-		for (int i = 0; i < elements.length; i += 2) {
-			if (elements[i] != null) {
-				if (elements[i].equals(key)) {
-					Object oldValue = elements[i + 1];
-					elements[i + 1] = value;
-					return oldValue;
-				}
-			} else if (emptyIndex == -1) {
-				// keep track of the first empty index
-				emptyIndex = i;
-			}
-		}
-		// this will put the emptyIndex greater than the size but
-		// that's ok because we will grow first.
-		if (emptyIndex == -1)
-			emptyIndex = count * 2;
-
-		// otherwise add it to the list of elements.
-		// grow if necessary
-		if (elements.length <= (count * 2))
-			grow();
-		elements[emptyIndex] = key;
-		elements[emptyIndex + 1] = value;
-		count++;
-		return null;
-	}
-
-	/**
-	 * @see Map#putAll(java.util.Map)
-	 */
-	public void putAll(Map map) {
-		for (Iterator i = map.keySet().iterator(); i.hasNext();) {
-			Object key = i.next();
-			Object value = map.get(key);
-			put(key, value);
-		}
-	}
-
-	/**
-	 * @see Map#remove(java.lang.Object)
-	 */
-	public Object remove(Object key) {
-		if (elements == null || count == 0)
-			return null;
-		for (int i = 0; i < elements.length; i = i + 2) {
-			if (elements[i] != null && elements[i].equals(key)) {
-				elements[i] = null;
-				Object result = elements[i + 1];
-				elements[i + 1] = null;
-				count--;
-				return result;
-			}
-		}
-		return null;
-	}
-
-	/* (non-Javadoc
-	 * Method declared on IStringPoolParticipant
-	 */
-	public void shareStrings(StringPool set) {
-		//copy elements for thread safety
-		Object[] array = elements;
-		if (array == null)
-			return;
-		for (int i = 0; i < array.length; i++) {
-			Object o = array[i];
-			if (o instanceof String)
-				array[i] = set.add((String) o);
-		}
-	}
-
-	/**
-	 * @see Map#size()
-	 */
-	public int size() {
-		return count;
-	}
-
-	/**
-	 * Creates a new hash map with the same contents as this map.
-	 */
-	private HashMap toHashMap() {
-		HashMap result = new HashMap(size());
-		for (int i = 0; i < elements.length; i = i + 2) {
-			if (elements[i] != null) {
-				result.put(elements[i], elements[i + 1]);
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * @see Map#values() 
-	 * 
-	 * Note: This implementation does not conform properly to the
-	 * specification in the Map interface. The returned collection will not
-	 * be bound to this map and will not remain in sync with this map.
-	 */
-	public Collection values() {
-		Set result = new HashSet(size());
-		for (int i = 1; i < elements.length; i = i + 2) {
-			if (elements[i] != null) {
-				result.add(elements[i]);
-			}
-		}
-		return result;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/OrderedLock.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/OrderedLock.java
deleted file mode 100644
index 4926ed5..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/OrderedLock.java
+++ /dev/null
@@ -1,297 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.jobs;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.jobs.ILock;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-
-/**
- * A lock used to control write access to an exclusive resource.
- * 
- * The lock avoids circular waiting deadlocks by detecting the deadlocks
- * and resolving them through the suspension of all locks owned by one 
- * of the threads involved in the deadlock. This makes it impossible for n such 
- * locks to deadlock while waiting for each other.  The downside is that this means
- * that during an interval when a process owns a lock, it can be forced
- * to give the lock up and wait until all locks it requires become
- * available.  This removes the feature of exclusive access to the
- * resource in contention for the duration between acquire() and
- * release() calls.
- * 
- * The lock implementation prevents starvation by granting the
- * lock in the same order in which acquire() requests arrive. In
- * this scheme, starvation is only possible if a thread retains
- * a lock indefinitely.
- */
-public class OrderedLock implements ILock, ISchedulingRule {
-
-	private static final boolean DEBUG = false;
-	/**
-	 * Locks are sequentially ordered for debugging purposes.
-	 */
-	private static int nextLockNumber = 0;
-	/**
-	 * The thread of the operation that currently owns the lock.
-	 */
-	private volatile Thread currentOperationThread;
-	/**
-	 * Records the number of successive acquires in the same
-	 * thread. The lock is released only when the depth
-	 * reaches zero.
-	 */
-	private int depth;
-	/**
-	 * The manager that implements the deadlock detection and resolution protocol.
-	 */
-	private final LockManager manager;
-	private final int number;
-
-	/**
-	 * Queue of semaphores for threads currently waiting
-	 * on the lock. This queue is not thread-safe, so access
-	 * to this queue must be synchronized on the lock instance.
-	 */
-	private final Queue operations = new Queue();
-
-	/**
-	 * Creates a new workspace lock.
-	 */
-	OrderedLock(LockManager manager) {
-		this.manager = manager;
-		this.number = nextLockNumber++;
-	}
-
-	/* (non-Javadoc)
-	 * @see Locks.ILock#acquire()
-	 */
-	public void acquire() {
-		//spin until the lock is successfully acquired
-		//NOTE: spinning here allows the UI thread to service pending syncExecs
-		//if the UI thread is waiting to acquire a lock.
-		while (true) {
-			try {
-				if (acquire(Long.MAX_VALUE))
-					return;
-			} catch (InterruptedException e) {
-				//ignore and loop
-			}
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see Locks.ILock#acquire(long)
-	 */
-	public boolean acquire(long delay) throws InterruptedException {
-		if (Thread.interrupted())
-			throw new InterruptedException();
-
-		boolean success = false;
-		if (delay <= 0)
-			return attempt();
-		Semaphore semaphore = createSemaphore();
-		if (semaphore == null)
-			return true;
-		if (DEBUG)
-			System.out.println("[" + Thread.currentThread() + "] Operation waiting to be executed... " + this); //$NON-NLS-1$ //$NON-NLS-2$
-		success = doAcquire(semaphore, delay);
-		manager.resumeSuspendedLocks(Thread.currentThread());
-		if (DEBUG && success)
-			System.out.println("[" + Thread.currentThread() + "] Operation started... " + this); //$NON-NLS-1$ //$NON-NLS-2$
-		else if (DEBUG)
-			System.out.println("[" + Thread.currentThread() + "] Operation timed out... " + this); //$NON-NLS-1$ //$NON-NLS-2$	
-		return success;
-	}
-
-	/**
-	 * Attempts to acquire the lock.  Returns false if the lock is not available and
-	 * true if the lock has been successfully acquired.
-	 */
-	private synchronized boolean attempt() {
-		//return true if we already own the lock
-		//also, if nobody is waiting, grant the lock immediately
-		if ((currentOperationThread == Thread.currentThread()) || (currentOperationThread == null && operations.isEmpty())) {
-			depth++;
-			setCurrentOperationThread(Thread.currentThread());
-			return true;
-		}
-		return false;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.jobs.ISchedulingRule#contains(org.eclipse.core.runtime.jobs.ISchedulingRule)
-	 */
-	public boolean contains(ISchedulingRule rule) {
-		return false;
-	}
-
-	/**
-	 * Returns null if acquired and a Semaphore object otherwise. If a
-	 * waiting semaphore already exists for this thread, it will be returned, 
-	 * otherwise a new semaphore will be created, enqueued, and returned.
-	 */
-	private synchronized Semaphore createSemaphore() {
-		return attempt() ? null : enqueue(new Semaphore(Thread.currentThread()));
-	}
-
-	/**
-	 * Attempts to acquire this lock.  Callers will block  until this lock comes available to 
-	 * them, or until the specified delay has elapsed.
-	 */
-	private boolean doAcquire(Semaphore semaphore, long delay) throws InterruptedException {
-		boolean success = false;
-		//notify hook to service pending syncExecs before falling asleep
-		if (manager.aboutToWait(this.currentOperationThread)) {
-			//hook granted immediate access
-			//remove semaphore for the lock request from the queue
-			//do not log in graph because this thread did not really get the lock
-			removeFromQueue(semaphore);
-			depth++;
-			manager.addLockThread(currentOperationThread, this);
-			return true;
-		}
-		//Make sure the semaphore is in the queue before we start waiting
-		//It might have been removed from the queue while servicing syncExecs
-		//This is will return our existing semaphore if it is still in the queue
-		semaphore = createSemaphore();
-		if (semaphore == null)
-			return true;
-		manager.addLockWaitThread(Thread.currentThread(), this);
-		try {
-			success = semaphore.acquire(delay);
-		} catch (InterruptedException e) {
-			if (DEBUG)
-				System.out.println("[" + Thread.currentThread() + "] Operation interrupted while waiting... :-|"); //$NON-NLS-1$ //$NON-NLS-2$
-			throw e;
-		}
-		if (success) {
-			depth++;
-			updateCurrentOperation();
-		} else {
-			removeFromQueue(semaphore);
-			manager.removeLockWaitThread(Thread.currentThread(), this);
-		}
-		return success;
-	}
-
-	/**
-	 * Releases this lock from the thread that used to own it.
-	 * Grants this lock to the next thread in the queue.  
-	 */
-	private synchronized void doRelease() {
-		//notify hook
-		manager.aboutToRelease();
-		depth = 0;
-		Semaphore next = (Semaphore) operations.peek();
-		setCurrentOperationThread(null);
-		if (next != null)
-			next.release();
-	}
-
-	/**
-	 * If there is another semaphore with the same runnable in the
-	 * queue, the other is returned and the new one is not added.
-	 */
-	private synchronized Semaphore enqueue(Semaphore newSemaphore) {
-		Semaphore semaphore = (Semaphore) operations.get(newSemaphore);
-		if (semaphore == null) {
-			operations.enqueue(newSemaphore);
-			return newSemaphore;
-		}
-		return semaphore;
-	}
-
-	/**
-	 * Suspend this lock by granting the lock to the next lock in the queue.
-	 * Return the depth of the suspended lock. 
-	 */
-	protected int forceRelease() {
-		int oldDepth = depth;
-		doRelease();
-		return oldDepth;
-	}
-
-	/* (non-Javadoc)
-	 * @see Locks.ILock#getDepth()
-	 */
-	public int getDepth() {
-		return depth;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.jobs.ISchedulingRule#isConflicting(org.eclipse.core.runtime.jobs.ISchedulingRule)
-	 */
-	public boolean isConflicting(ISchedulingRule rule) {
-		return rule == this;
-	}
-
-	/* (non-Javadoc)
-	 * @see Locks.ILock#release()
-	 */
-	public void release() {
-		if (depth == 0)
-			return;
-		//only release the lock when the depth reaches zero
-		Assert.isTrue(depth >= 0, "Lock released too many times"); //$NON-NLS-1$
-		if (--depth == 0)
-			doRelease();
-		else
-			manager.removeLockThread(currentOperationThread, this);
-	}
-
-	/**
-	 * Removes a semaphore from the queue of waiting operations.
-	 * 
-	 * @param semaphore The semaphore to remove
-	 */
-	private synchronized void removeFromQueue(Semaphore semaphore) {
-		operations.remove(semaphore);
-	}
-
-	/**
-	 * If newThread is null, release this lock from its previous owner.
-	 * If newThread is not null, grant this lock to newThread.
-	 */
-	private void setCurrentOperationThread(Thread newThread) {
-		if ((currentOperationThread != null) && (newThread == null))
-			manager.removeLockThread(currentOperationThread, this);
-		this.currentOperationThread = newThread;
-		if (currentOperationThread != null)
-			manager.addLockThread(currentOperationThread, this);
-	}
-
-	/**
-	 * Forces the lock to be at the given depth.
-	 * Used when re-acquiring a suspended lock.
-	 */
-	protected void setDepth(int newDepth) {
-		for (int i = depth; i < newDepth; i++) {
-			manager.addLockThread(currentOperationThread, this);
-		}
-		this.depth = newDepth;
-	}
-
-	/**
-	 * For debugging purposes only.
-	 */
-	public String toString() {
-		return "OrderedLock (" + number + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	/**
-	 * This lock has just been granted to a new thread (the thread waited for it).
-	 * Remove the request from the queue and update both the graph and the lock.
-	 */
-	private synchronized void updateCurrentOperation() {
-		operations.dequeue();
-		setCurrentOperationThread(Thread.currentThread());
-	}
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Queue.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Queue.java
deleted file mode 100644
index 4262b44..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Queue.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.jobs;
-
-import java.util.*;
-
-/**
- * A Queue of objects.
- */
-public class Queue {
-	protected Object[] elements;
-	protected int head;
-	protected boolean reuse;
-	protected int tail;
-
-	public Queue() {
-		this(20, false);
-	}
-
-	/**
-	 * The parameter reuse indicates what do you want to happen with
-	 * the object reference when you remove it from the queue. If
-	 * reuse is false the queue no longer holds a reference to the
-	 * object when it is removed. If reuse is true you can use the
-	 * method getNextAvailableObject to get an used object, set its
-	 * new values and add it again to the queue.
-	 */
-	public Queue(int size, boolean reuse) {
-		elements = new Object[size];
-		head = tail = 0;
-		this.reuse = reuse;
-	}
-
-	/**
-	 * Adds an object to the tail of the queue.
-	 */
-	public void enqueue(Object element) {
-		int newTail = increment(tail);
-		if (newTail == head) {
-			grow();
-			newTail = tail + 1;
-		}
-		elements[tail] = element;
-		tail = newTail;
-	}
-
-	/**
-	 * This method does not affect the queue itself. It is only a
-	 * helper to decrement an index in the queue.
-	 */
-	public int decrement(int index) {
-		return (index == 0) ? (elements.length - 1) : index - 1;
-	}
-
-	public Iterator elements() {
-		/**/
-		if (isEmpty())
-			return new ArrayList(0).iterator();
-
-		/* if head < tail we can use the same array */
-		if (head <= tail)
-			return Arrays.asList(elements).iterator();
-
-		/* otherwise we need to create a new array */
-		Object[] newElements = new Object[size()];
-		int end = (elements.length - head);
-		System.arraycopy(elements, head, newElements, 0, end);
-		System.arraycopy(elements, 0, newElements, end, tail);
-		return Arrays.asList(newElements).iterator();
-	}
-
-	public Object get(Object o) {
-		int index = head;
-		while (index != tail) {
-			if (elements[index].equals(o))
-				return elements[index];
-			index = increment(index);
-		}
-		return null;
-	}
-
-	/**
-	 * Removes the given object from the queue. Shifts the underlying array.
-	 */
-	public boolean remove(Object o) {
-		int index = head;
-		//find the object to remove
-		while (index != tail) {
-			if (elements[index].equals(o))
-				break;
-			index = increment(index);
-		}
-		//if element wasn't found, return
-		if (index == tail)
-			return false;
-		//store a reference to it (needed for reuse of objects)
-		Object toRemove = elements[index];
-		int nextIndex = -1;
-		while (index != tail) {
-			nextIndex = increment(index);
-			if (nextIndex != tail)
-				elements[index] = elements[nextIndex];
-
-			index = nextIndex;
-		}
-		//decrement tail
-		tail = decrement(tail);
-
-		//if objects are reused, transfer the reference that is removed to the end of the queue
-		//otherwise set the element after the last one to null (to avoid duplicate references)
-		elements[tail] = reuse ? toRemove : null;
-		return true;
-	}
-
-	protected void grow() {
-		int newSize = (int) (elements.length * 1.5);
-		Object[] newElements = new Object[newSize];
-		if (tail >= head)
-			System.arraycopy(elements, head, newElements, head, size());
-		else {
-			int newHead = newSize - (elements.length - head);
-			System.arraycopy(elements, 0, newElements, 0, tail + 1);
-			System.arraycopy(elements, head, newElements, newHead, (newSize - newHead));
-			head = newHead;
-		}
-		elements = newElements;
-	}
-
-	/**
-	 * This method does not affect the queue itself. It is only a
-	 * helper to increment an index in the queue.
-	 */
-	public int increment(int index) {
-		return (index == (elements.length - 1)) ? 0 : index + 1;
-	}
-
-	public boolean isEmpty() {
-		return tail == head;
-	}
-
-	public Object peek() {
-		return elements[head];
-	}
-
-	/**
-	 * Removes an returns the item at the head of the queue.
-	 */
-	public Object dequeue() {
-		if (isEmpty())
-			return null;
-		Object result = peek();
-		if (!reuse)
-			elements[head] = null;
-		head = increment(head);
-		return result;
-	}
-
-	public int size() {
-		return tail > head ? (tail - head) : ((elements.length - head) + tail);
-	}
-
-	public String toString() {
-		StringBuffer sb = new StringBuffer();
-		sb.append("["); //$NON-NLS-1$
-		if (!isEmpty()) {
-			Iterator it = elements();
-			while (true) {
-				sb.append(it.next());
-				if (it.hasNext())
-					sb.append(", "); //$NON-NLS-1$
-				else
-					break;
-			}
-		}
-		sb.append("]"); //$NON-NLS-1$
-		return sb.toString();
-	}
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Semaphore.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Semaphore.java
deleted file mode 100644
index ff43402..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Semaphore.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.jobs;
-
-public class Semaphore {
-	protected long notifications;
-	protected Runnable runnable;
-
-	public Semaphore(Runnable runnable) {
-		this.runnable = runnable;
-		notifications = 0;
-	}
-
-	/**
-	 * Attempts to acquire this semaphore.  Returns true if it was successfully acquired,
-	 * and false otherwise.
-	 */
-	public synchronized boolean acquire(long delay) throws InterruptedException {
-		if (Thread.interrupted())
-			throw new InterruptedException();
-		long start = System.currentTimeMillis();
-		long timeLeft = delay;
-		while (true) {
-			if (notifications > 0) {
-				notifications--;
-				return true;
-			}
-			if (timeLeft <= 0)
-				return false;
-			wait(timeLeft);
-			timeLeft = start + delay - System.currentTimeMillis();
-		}
-	}
-
-	public boolean equals(Object obj) {
-		return (runnable == ((Semaphore) obj).runnable);
-	}
-
-	public int hashCode() {
-		return runnable == null ? 0 : runnable.hashCode();
-	}
-
-	public synchronized void release() {
-		notifications++;
-		notifyAll();
-	}
-
-	// for debug only
-	public String toString() {
-		return "Semaphore(" + runnable + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-	}
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/StringPool.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/StringPool.java
deleted file mode 100644
index 53a302a..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/StringPool.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.jobs;
-
-import java.util.HashMap;
-
-/**
- * A string pool is used for sharing strings in a way that eliminates duplicate
- * equal strings.  A string pool instance can be maintained over a long period
- * of time, or used as a temporary structure during a string sharing pass over
- * a data structure.
- * <p>
- * This class is not intended to be subclassed by clients.
- * </p>
- * 
- * Note: This class is copied from org.eclipse.core.resources
- * 
- * @since 3.1
- */
-public final class StringPool {
-	private int savings;
-	private final HashMap map = new HashMap();
-
-	/**
-	 * Adds a <code>String</code> to the pool.  Returns a <code>String</code>
-	 * that is equal to the argument but that is unique within this pool.
-	 * @param string The string to add to the pool
-	 * @return A string that is equal to the argument.
-	 */
-	public String add(String string) {
-		if (string == null)
-			return string;
-		Object result = map.get(string);
-		if (result != null) {
-			if (result != string)
-				savings += 44 + 2 * string.length();
-			return (String) result;
-		}
-		map.put(string, string);
-		return string;
-	}
-
-	/**
-	 * Returns an estimate of the size in bytes that was saved by sharing strings in 
-	 * the pool.  In particular, this returns the size of all strings that were added to the
-	 * pool after an equal string had already been added.  This value can be used
-	 * to estimate the effectiveness of a string sharing operation, in order to 
-	 * determine if or when it should be performed again.
-	 * 
-	 * In some cases this does not precisely represent the number of bytes that 
-	 * were saved.  For example, say the pool already contains string S1.  Now 
-	 * string S2, which is equal to S1 but not identical, is added to the pool five 
-	 * times. This method will return the size of string S2 multiplied by the 
-	 * number of times it was added, even though the actual savings in this case
-	 * is only the size of a single copy of S2.
-	 */
-	public int getSavedStringCount() {
-		return savings;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ThreadJob.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ThreadJob.java
deleted file mode 100644
index b37c215..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ThreadJob.java
+++ /dev/null
@@ -1,317 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.jobs;
-
-import org.eclipse.core.internal.runtime.RuntimeLog;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.core.runtime.jobs.Job;
-
-/**
- * Captures the implicit job state for a given thread. 
- */
-class ThreadJob extends Job {
-	private final JobManager manager;
-	/**
-	 * Set to true if this thread job is running in a thread that did
-	 * not own a rule already.  This means it needs to acquire the
-	 * rule during beginRule, and must release the rule during endRule.
-	 */
-	protected boolean acquireRule = false;
-
-	/**
-	 * Indicates that this thread job did report to the progress manager
-	 * that it will be blocked, and therefore when it begins it must
-	 * be reported to the job manager when it is no longer blocked.
-	 */
-	boolean isBlocked = false;
-
-	/**
-	 * True if this ThreadJob has begun execution
-	 */
-	protected boolean isRunning = false;
-
-	/**
-	 * Used for diagnosing mismatched begin/end pairs. This field
-	 * is only used when in debug mode, to capture the stack trace
-	 * of the last call to beginRule.
-	 */
-	private RuntimeException lastPush = null;
-	/**
-	 * The actual job that is running in the thread that this 
-	 * ThreadJob represents.  This will be null if this thread
-	 * job is capturing a rule acquired outside of a job.
-	 */
-	protected Job realJob;
-	/**
-	 * The stack of rules that have been begun in this thread, but not yet ended.
-	 */
-	private ISchedulingRule[] ruleStack;
-	/**
-	 * Rule stack pointer.
-	 */
-	private int top;
-
-	ThreadJob(JobManager manager, ISchedulingRule rule) {
-		super("Implicit Job"); //$NON-NLS-1$
-		this.manager = manager;
-		setSystem(true);
-		setPriority(Job.INTERACTIVE);
-		ruleStack = new ISchedulingRule[2];
-		top = -1;
-		setRule(rule);
-	}
-
-	/**
-	 * An endRule was called that did not match the last beginRule in
-	 * the stack.  Report and log a detailed informational message.
-	 * @param rule The rule that was popped
-	 */
-	private void illegalPop(ISchedulingRule rule) {
-		StringBuffer buf = new StringBuffer("Attempted to endRule: "); //$NON-NLS-1$
-		buf.append(rule);
-		if (top >= 0 && top < ruleStack.length) {
-			buf.append(", does not match most recent begin: "); //$NON-NLS-1$
-			buf.append(ruleStack[top]);
-		} else {
-			if (top < 0)
-				buf.append(", but there was no matching beginRule"); //$NON-NLS-1$
-			else
-				buf.append(", but the rule stack was out of bounds: " + top); //$NON-NLS-1$
-		}
-		buf.append(".  See log for trace information if rule tracing is enabled."); //$NON-NLS-1$
-		String msg = buf.toString();
-		if (JobManager.DEBUG || JobManager.DEBUG_BEGIN_END) {
-			System.out.println(msg);
-			Throwable t = lastPush == null ? new IllegalArgumentException() : lastPush;
-			IStatus error = new Status(IStatus.ERROR, JobManager.PI_JOBS, 1, msg, t);
-			RuntimeLog.log(error);
-		}
-		Assert.isLegal(false, msg);
-	}
-
-	/**
-	 * Client has attempted to begin a rule that is not contained within
-	 * the outer rule.
-	 */
-	private void illegalPush(ISchedulingRule pushRule, ISchedulingRule baseRule) {
-		StringBuffer buf = new StringBuffer("Attempted to beginRule: "); //$NON-NLS-1$
-		buf.append(pushRule);
-		buf.append(", does not match outer scope rule: "); //$NON-NLS-1$
-		buf.append(baseRule);
-		String msg = buf.toString();
-		if (JobManager.DEBUG) {
-			System.out.println(msg);
-			IStatus error = new Status(IStatus.ERROR, JobManager.PI_JOBS, 1, msg, new IllegalArgumentException());
-			RuntimeLog.log(error);
-		}
-		Assert.isLegal(false, msg);
-
-	}
-
-	/**
-	 * Returns true if the monitor is canceled, and false otherwise.
-	 * Protects the caller from exception in the monitor implementation.
-	 */
-	private boolean isCanceled(IProgressMonitor monitor) {
-		try {
-			return monitor.isCanceled();
-		} catch (RuntimeException e) {
-			//logged message should not be translated
-			IStatus status = new Status(IStatus.ERROR, JobManager.PI_JOBS, JobManager.PLUGIN_ERROR, "ThreadJob.isCanceled", e); //$NON-NLS-1$
-			RuntimeLog.log(status);
-		}
-		return false;
-	}
-
-	/**
-	 * Returns true if this thread job was scheduled and actually started running.
-	 */
-	synchronized boolean isRunning() {
-		return isRunning;
-	}
-	
-	/**
-	 * Schedule the job and block the calling thread until the job starts running.
-	 * Returns the ThreadJob instance that was started.
-	 */
-	ThreadJob joinRun(IProgressMonitor monitor) {
-		if (isCanceled(monitor))
-			throw new OperationCanceledException();
-		//check if there is a blocking thread before waiting
-		InternalJob blockingJob = manager.findBlockingJob(this);
-		Thread blocker = blockingJob == null ? null : blockingJob.getThread();
-		ThreadJob result = this;
-		//lock listener decided to grant immediate access
-		try {
-			if (manager.getLockManager().aboutToWait(blocker))
-				return this;
-			try {
-				waitStart(monitor, blockingJob);
-				final Thread currentThread = Thread.currentThread();
-				while (true) {
-					if (isCanceled(monitor))
-						throw new OperationCanceledException();
-					//try to run the job 
-					if (manager.runNow(this))
-						return this;
-					//update blocking job
-					blockingJob = manager.findBlockingJob(this);
-					//the rule could have been transferred to this thread while we were waiting
-					blocker = blockingJob == null ? null : blockingJob.getThread();
-					if (blocker == currentThread && blockingJob instanceof ThreadJob) {
-						//now we are just the nested acquire case
-						result = (ThreadJob)blockingJob;
-						result.push(getRule());
-						result.isBlocked = this.isBlocked;
-						return result;
-					}
-					if (manager.getLockManager().aboutToWait(blocker))
-						return this;
-					//must lock instance before calling wait
-					synchronized (this) {
-						try {
-							wait(250);
-						} catch (InterruptedException e) {
-							//ignore
-						}
-					}
-				}
-			} finally {
-				if (this == result)
-					waitEnd(monitor);
-			}
-		} finally {
-			manager.getLockManager().aboutToRelease();
-		}
-	}
-
-	/**
-	 * Pops a rule. Returns true if it was the last rule for this thread
-	 * job, and false otherwise.
-	 */
-	boolean pop(ISchedulingRule rule) {
-		if (top < 0 || ruleStack[top] != rule)
-			illegalPop(rule);
-		ruleStack[top--] = null;
-		return top < 0;
-	}
-
-	/**
-	 * Adds a new scheduling rule to the stack of rules for this thread. Throws
-	 * a runtime exception if the new rule is not compatible with the base
-	 * scheduling rule for this thread.
-	 */
-	void push(final ISchedulingRule rule) {
-		final ISchedulingRule baseRule = getRule();
-		if (++top >= ruleStack.length) {
-			ISchedulingRule[] newStack = new ISchedulingRule[ruleStack.length * 2];
-			System.arraycopy(ruleStack, 0, newStack, 0, ruleStack.length);
-			ruleStack = newStack;
-		}
-		ruleStack[top] = rule;
-		if (JobManager.DEBUG_BEGIN_END)
-			lastPush = (RuntimeException) new RuntimeException().fillInStackTrace();
-		//check for containment last because we don't want to fail again on endRule
-		if (baseRule != null && rule != null && !baseRule.contains(rule))
-			illegalPush(rule, baseRule);
-	}
-
-	/**
-	 * Reset all of this job's fields so it can be reused.  Returns false if
-	 * reuse is not possible
-	 */
-	boolean recycle() {
-		//don't recycle if still running for any reason
-		if (getState() != Job.NONE)
-			return false;
-		//clear and reset all fields
-		acquireRule = isRunning = isBlocked = false;
-		realJob = null;
-		setRule(null);
-		setThread(null);
-		if (ruleStack.length != 2)
-			ruleStack = new ISchedulingRule[2];
-		else
-			ruleStack[0] = ruleStack[1] = null;
-		top = -1;
-		return true;
-	}
-
-	/** (non-Javadoc)
-	 * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
-	 */
-	public IStatus run(IProgressMonitor monitor) {
-		synchronized (this) {
-			isRunning = true;
-			notify();
-		}
-		return ASYNC_FINISH;
-	}
-
-	/**
-	 * Records the job that is actually running in this thread, if any
-	 * @param realJob The running job
-	 */
-	void setRealJob(Job realJob) {
-		this.realJob = realJob;
-	}
-
-	/**
-	 * Returns true if this job should cause a self-canceling job
-	 * to cancel itself, and false otherwise.
-	 */
-	boolean shouldInterrupt() {
-		return realJob == null ? true : !realJob.isSystem();
-	}
-
-	/* (non-javadoc)
-	 * For debugging purposes only
-	 */
-	public String toString() {
-		StringBuffer buf = new StringBuffer("ThreadJob"); //$NON-NLS-1$
-		buf.append('(').append(realJob).append(',').append('[');
-		for (int i = 0; i <= top && i < ruleStack.length; i++)
-			buf.append(ruleStack[i]).append(',');
-		buf.append(']').append(')');
-		return buf.toString();
-	}
-
-	/**
-	 * Reports that this thread was blocked, but is no longer blocked and is able
-	 * to proceed.
-	 * @param monitor The monitor to report unblocking to.
-	 */
-	private void waitEnd(IProgressMonitor monitor) {
-		final LockManager lockManager = manager.getLockManager();
-		final Thread currentThread = Thread.currentThread();
-		if (isRunning()) {
-			lockManager.addLockThread(currentThread, getRule());
-			//need to re-aquire any locks that were suspended while this thread was blocked on the rule
-			lockManager.resumeSuspendedLocks(currentThread);
-		} else {
-			//tell lock manager that this thread gave up waiting
-			lockManager.removeLockWaitThread(currentThread, getRule());
-		}
-	}
-
-	/**
-	 * Indicates the start of a wait on a scheduling rule. Report the
-	 * blockage to the progress manager and update the lock manager.
-	 * @param monitor The monitor to report blocking to
-	 * @param blockingJob The job that is blocking this thread, or <code>null</code>
-	 */
-	private void waitStart(IProgressMonitor monitor, InternalJob blockingJob) {
-		manager.getLockManager().addLockWaitThread(Thread.currentThread(), getRule());
-		isBlocked = true;
-		manager.reportBlocked(monitor, blockingJob);
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Worker.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Worker.java
deleted file mode 100644
index 1a2bda3..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Worker.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.jobs;
-
-import org.eclipse.core.internal.runtime.RuntimeLog;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * A worker thread processes jobs supplied to it by the worker pool.  When
- * the worker pool gives it a null job, the worker dies.
- */
-public class Worker extends Thread {
-	//worker number used for debugging purposes only
-	private static int nextWorkerNumber = 0;
-	private volatile InternalJob currentJob;
-	private final WorkerPool pool;
-
-	public Worker(WorkerPool pool) {
-		super("Worker-" + nextWorkerNumber++); //$NON-NLS-1$
-		this.pool = pool;
-		//set the context loader to avoid leaking the current context loader
-		//for the thread that spawns this worker (bug 98376)
-		setContextClassLoader(pool.defaultContextLoader);
-	}
-
-	/**
-	 * Returns the currently running job, or null if none.
-	 */
-	public Job currentJob() {
-		return (Job) currentJob;
-	}
-
-	private IStatus handleException(InternalJob job, Throwable t) {
-		String message = NLS.bind(JobMessages.jobs_internalError, job.getName());
-		return new Status(IStatus.ERROR, JobManager.PI_JOBS, JobManager.PLUGIN_ERROR, message, t);
-	}
-
-	public void run() {
-		setPriority(Thread.NORM_PRIORITY);
-		try {
-			while ((currentJob = pool.startJob(this)) != null) {
-				//if job is null we've been shutdown
-				if (currentJob == null)
-					return;
-				currentJob.setThread(this);
-				IStatus result = Status.OK_STATUS;
-				try {
-					result = currentJob.run(currentJob.getProgressMonitor());
-				} catch (OperationCanceledException e) {
-					result = Status.CANCEL_STATUS;
-				} catch (Exception e) {
-					result = handleException(currentJob, e);
-				} catch (ThreadDeath e) {
-					//must not consume thread death
-					throw e;
-				} catch (Error e) {
-					result = handleException(currentJob, e);
-				} finally {
-					//clear interrupted state for this thread
-					Thread.interrupted();
-					//result must not be null
-					if (result == null)
-						result = handleException(currentJob, new NullPointerException());
-					pool.endJob(currentJob, result);
-					if ((result.getSeverity() & (IStatus.ERROR | IStatus.WARNING)) != 0)
-						RuntimeLog.log(result);
-					currentJob = null;
-				}
-			}
-		} catch (Throwable t) {
-			t.printStackTrace();
-		} finally {
-			currentJob = null;
-			pool.endWorker(this);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/WorkerPool.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/WorkerPool.java
deleted file mode 100644
index b1c2783..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/WorkerPool.java
+++ /dev/null
@@ -1,235 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.jobs;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.jobs.Job;
-
-/**
- * Maintains a pool of worker threads. Threads are constructed lazily as
- * required, and are eventually discarded if not in use for awhile. This class
- * maintains the thread creation/destruction policies for the job manager.
- * 
- * Implementation note: all the data structures of this class are protected
- * by the instance's object monitor.  To avoid deadlock with third party code,
- * this lock is never held when calling methods outside this class that may in
- * turn use locks.
- */
-class WorkerPool {
-	/**
-	 * Threads not used by their best before timestamp are destroyed. 
-	 */
-	private static final int BEST_BEFORE = 60000;
-	/**
-	 * There will always be at least MIN_THREADS workers in the pool.
-	 */
-	private static final int MIN_THREADS = 1;
-	/**
-	 * Use the busy thread count to avoid starting new threads when a living
-	 * thread is just doing house cleaning (notifying listeners, etc).
-	 */
-	private int busyThreads = 0;
-
-	/**
-	 * The default context class loader to use when creating worker threads.
-	 */
-	protected final ClassLoader defaultContextLoader;
-
-	private JobManager manager;
-	/**
-	 * The number of workers in the threads array
-	 */
-	private int numThreads = 0;
-	/**
-	 * The number of threads that are currently sleeping 
-	 */
-	private int sleepingThreads = 0;
-	/**
-	 * The living set of workers in this pool.
-	 */
-	private Worker[] threads = new Worker[10];
-
-	protected WorkerPool(JobManager manager) {
-		this.manager = manager;
-		this.defaultContextLoader = Thread.currentThread().getContextClassLoader();
-	}
-
-	/**
-	 * Adds a worker to the list of workers.
-	 */
-	private synchronized void add(Worker worker) {
-		int size = threads.length;
-		if (numThreads + 1 > size) {
-			Worker[] newThreads = new Worker[2 * size];
-			System.arraycopy(threads, 0, newThreads, 0, size);
-			threads = newThreads;
-		}
-		threads[numThreads++] = worker;
-	}
-
-	private synchronized void decrementBusyThreads() {
-		//impossible to have less than zero busy threads
-		if (--busyThreads < 0) {
-			if (JobManager.DEBUG)
-				Assert.isTrue(false, Integer.toString(busyThreads));
-			busyThreads = 0;
-		}
-	}
-
-	/**
-	 * Signals the end of a job.  Note that this method can be called under
-	 * OutOfMemoryError conditions and thus must be paranoid about allocating objects.
-	 */
-	protected void endJob(InternalJob job, IStatus result) {
-		decrementBusyThreads();
-		//need to end rule in graph before ending job so that 2 threads
-		//do not become the owners of the same rule in the graph
-		if ((job.getRule() != null) && !(job instanceof ThreadJob)) {
-			//remove any locks this thread may be owning on that rule
-			manager.getLockManager().removeLockCompletely(Thread.currentThread(), job.getRule());
-		}
-		manager.endJob(job, result, true);
-		//ensure this thread no longer owns any scheduling rules
-		manager.implicitJobs.endJob(job);
-	}
-
-	/**
-	 * Signals the death of a worker thread.  Note that this method can be called under
-	 * OutOfMemoryError conditions and thus must be paranoid about allocating objects.
-	 */
-	protected synchronized void endWorker(Worker worker) {
-		if (remove(worker) && JobManager.DEBUG)
-			JobManager.debug("worker removed from pool: " + worker); //$NON-NLS-1$
-	}
-
-	private synchronized void incrementBusyThreads() {
-		//impossible to have more busy threads than there are threads
-		if (++busyThreads > numThreads) {
-			if (JobManager.DEBUG)
-				Assert.isTrue(false, Integer.toString(busyThreads) + ',' + numThreads);
-			busyThreads = numThreads;
-		}
-	}
-
-	/**
-	 * Notification that a job has been added to the queue. Wake a worker,
-	 * creating a new worker if necessary. The provided job may be null.
-	 */
-	protected synchronized void jobQueued(InternalJob job) {
-		//if there is a sleeping thread, wake it up
-		if (sleepingThreads > 0) {
-			notify();
-			return;
-		}
-		//create a thread if all threads are busy and we're under the max size
-		//if the job is high priority, we start a thread no matter what
-		if (busyThreads >= numThreads) {
-			Worker worker = new Worker(this);
-			add(worker);
-			if (JobManager.DEBUG)
-				JobManager.debug("worker added to pool: " + worker); //$NON-NLS-1$
-			worker.start();
-			return;
-		}
-	}
-
-	/**
-	 * Remove a worker thread from our list.
-	 * @return true if a worker was removed, and false otherwise.
-	 */
-	private synchronized boolean remove(Worker worker) {
-		for (int i = 0; i < threads.length; i++) {
-			if (threads[i] == worker) {
-				System.arraycopy(threads, i + 1, threads, i, numThreads - i - 1);
-				threads[--numThreads] = null;
-				return true;
-			}
-		}
-		return false;
-	}
-
-	protected synchronized void shutdown() {
-		notifyAll();
-	}
-
-	/**
-	 * Sleep for the given duration or until woken. 
-	 */
-	private synchronized void sleep(long duration) {
-		sleepingThreads++;
-		busyThreads--;
-		if (JobManager.DEBUG)
-			JobManager.debug("worker sleeping for: " + duration + "ms"); //$NON-NLS-1$ //$NON-NLS-2$
-		try {
-			wait(duration);
-		} catch (InterruptedException e) {
-			if (JobManager.DEBUG)
-				JobManager.debug("worker interrupted while waiting... :-|"); //$NON-NLS-1$
-		} finally {
-			sleepingThreads--;
-			busyThreads++;
-		}
-	}
-
-	/**
-	 * Returns a new job to run. Returns null if the thread should die. 
-	 */
-	protected InternalJob startJob(Worker worker) {
-		//if we're above capacity, kill the thread
-		synchronized (this) {
-			if (!manager.isActive()) {
-				//must remove the worker immediately to prevent all threads from expiring
-				endWorker(worker);
-				return null;
-			}
-			//set the thread to be busy now in case of reentrant scheduling
-			incrementBusyThreads();
-		}
-		Job job = null;
-		try {
-			job = manager.startJob();
-			//spin until a job is found or until we have been idle for too long
-			long idleStart = System.currentTimeMillis();
-			while (manager.isActive() && job == null) {
-				long hint = manager.sleepHint();
-				if (hint > 0)
-					sleep(Math.min(hint, BEST_BEFORE));
-				job = manager.startJob();
-				//if we were already idle, and there are still no new jobs, then
-				// the thread can expire
-				synchronized (this) {
-					if (job == null && (System.currentTimeMillis() - idleStart > BEST_BEFORE) && (numThreads - busyThreads) > MIN_THREADS) {
-						//must remove the worker immediately to prevent all threads from expiring
-						endWorker(worker);
-						return null;
-					}
-				}
-			}
-			if (job != null) {
-				//if this job has a rule, then we are essentially acquiring a lock
-				if ((job.getRule() != null) && !(job instanceof ThreadJob)) {
-					//don't need to re-aquire locks because it was not recorded in the graph
-					//that this thread waited to get this rule
-					manager.getLockManager().addLockThread(Thread.currentThread(), job.getRule());
-				}
-				//see if we need to wake another worker
-				if (manager.sleepHint() <= 0)
-					jobQueued(null);
-			}
-		} finally {
-			//decrement busy thread count if we're not running a job
-			if (job == null)
-				decrementBusyThreads();
-		}
-		return job;
-	}
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/messages.properties b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/messages.properties
deleted file mode 100644
index 9bea82e..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/messages.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-### Runtime jobs plugin messages
-
-### Job Manager and Locks
-jobs_blocked0=The user operation is waiting for background work to complete.
-jobs_blocked1=The user operation is waiting for \"{0}\" to complete.
-jobs_internalError=An internal error occurred during: \"{0}\".
-jobs_waitFamSub={0} work item(s) left.
-
-### metadata
-meta_pluginProblems = Problems occurred when invoking code from plug-in: \"{0}\".
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/IJobChangeEvent.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/IJobChangeEvent.java
deleted file mode 100644
index e4bd4d0..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/IJobChangeEvent.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.jobs;
-
-import org.eclipse.core.runtime.IStatus;
-
-/**
- * An event describing a change to the state of a job.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @see IJobChangeListener
- * @since 3.0
- */
-public interface IJobChangeEvent {
-	/**
-	 * The amount of time in milliseconds to wait after scheduling the job before it 
-	 * should be run, or <code>-1</code> if not applicable for this type of event.  
-	 * This value is only applicable for the <code>scheduled</code> event.
-	 * 
-	 * @return the delay time for this event
-	 */
-	public long getDelay();
-
-	/**
-	 * The job on which this event occurred.
-	 * 
-	 * @return the job for this event
-	 */
-	public Job getJob();
-
-	/**
-	 * The result returned by the job's run method, or <code>null</code> if
-	 * not applicable.  This value is only applicable for the <code>done</code> event.
-	 * 
-	 * @return the status for this event
-	 */
-	public IStatus getResult();
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/IJobChangeListener.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/IJobChangeListener.java
deleted file mode 100644
index e642581..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/IJobChangeListener.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.jobs;
-
-/**
- * Callback interface for clients interested in being notified when jobs change state.
- * <p>
- * A single job listener instance can be added either to the job manager, for notification
- * of all scheduled jobs, or to any set of individual jobs.  A single listener instance should
- * not be added to both the job manager, and to individual jobs (such a listener may
- * receive duplicate notifications).
- * </p><p>
- * Clients should not rely on the result of the <code>Job#getState()</code> 
- * method on jobs for which notification is occurring. Listeners are notified of 
- * all job state changes, but whether the state change occurs before, during, or 
- * after listeners are notified is unspecified.
- * </p><p>
- * Clients may implement this interface.
- * </p>
- * @see JobChangeAdapter
- * @see IJobManager#addJobChangeListener(IJobChangeListener)
- * @see IJobManager#removeJobChangeListener(IJobChangeListener)
- * @see Job#addJobChangeListener(IJobChangeListener)
- * @see Job#getState()
- * @see Job#removeJobChangeListener(IJobChangeListener)
- * @since 3.0
- */
-public interface IJobChangeListener {
-	/**
-	 * Notification that a job is about to be run. Listeners are allowed to sleep, cancel, 
-	 * or change the priority of the job before it is started (and as a result may prevent
-	 * the run from actually occurring).
-	 * 
-	 * @param event the event details
-	 */
-	public void aboutToRun(IJobChangeEvent event);
-
-	/**
-	 * Notification that a job was previously sleeping and has now been rescheduled
-	 * to run.
-	 * 
-	 * @param event the event details
-	 */
-	public void awake(IJobChangeEvent event);
-
-	/**
-	 * Notification that a job has completed execution, either due to cancelation, successful
-	 * completion, or failure.  The event status object indicates how the job finished,
-	 * and the reason for failure, if applicable.
-	 * 
-	 * @param event the event details
-	 */
-	public void done(IJobChangeEvent event);
-
-	/**
-	 * Notification that a job has started running.
-	 * 
-	 * @param event the event details
-	 */
-	public void running(IJobChangeEvent event);
-
-	/**
-	 * Notification that a job is being added to the queue of scheduled jobs.  
-	 * The event details includes the scheduling delay before the job should start 
-	 * running.
-	 * 
-	 * @param event the event details, including the job instance and the scheduling
-	 * delay
-	 */
-	public void scheduled(IJobChangeEvent event);
-
-	/**
-	 * Notification that a job was waiting to run and has now been put in the
-	 * sleeping state.
-	 * 
-	 * @param event the event details
-	 */
-	public void sleeping(IJobChangeEvent event);
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/IJobManager.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/IJobManager.java
deleted file mode 100644
index fcc35bb..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/IJobManager.java
+++ /dev/null
@@ -1,388 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.jobs;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-
-/**
- * The job manager provides facilities for scheduling, querying, and maintaining jobs
- * and locks.  In particular, the job manager provides the following services:
- * <ul>
- * <li>Maintains a queue of jobs that are waiting to be run.  Items can be added to
- * the queue using the <code>schedule</code> method.</li>
- * <li>Allows manipulation of groups of jobs called job families.  Job families can
- * be canceled, put to sleep, or woken up atomically.  There is also a mechanism
- * for querying the set of known jobs in a given family.</li>
- * <li>Allows listeners to find out about progress on running jobs, and to find out
- * when jobs have changed states.</li>
- * <li>Provides a factory for creating lock objects.  Lock objects are smart monitors
- * that have strategies for avoiding deadlock.</li>
- * <li>Provide feedback to a client that is waiting for a given job or family of jobs
- * to complete.</li>
- * </ul>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @see Job
- * @see ILock
- * @since 3.0
- */
-public interface IJobManager {
-	/**
-	 * Registers a job listener with the job manager.  
-	 * Has no effect if an identical listener is already registered.
-	 * 
-	 * @param listener the listener to be added
-	 * @see #removeJobChangeListener(IJobChangeListener)
-	 * @see IJobChangeListener
-	 */
-	public void addJobChangeListener(IJobChangeListener listener);
-
-	/**
-	 * Begins applying this rule in the calling thread.  If the rule conflicts with another
-	 * rule currently running in another thread, this method blocks until there are
-	 * no conflicting rules.  Calls to <tt>beginRule</tt> must eventually be followed
-	 * by a matching call to <tt>endRule</tt> in the same thread and with the identical
-	 * rule instance. 
-	 * <p>
-	 * Rules can be nested only if the rule for the inner <tt>beginRule</tt>
-	 * is contained within the rule for the outer <tt>beginRule</tt>.  Rule containment
-	 * is tested with the API method <tt>ISchedulingRule.contains</tt>.  Also, begin/end
-	 * pairs must be strictly nested.  Only the rule that has most recently begun
-	 * can be ended at any given time.
-	 * <p>
-	 * A rule of <code>null</code> can be used, but will be ignored for scheduling 
-	 * purposes.  The outermost non-null rule in the thread will be used for scheduling. A
-	 * <code>null</code> rule that is begun must still be ended.
-	 * <p>
-	 * If this method is called from within a job that has a scheduling rule, the
-	 * given rule must also be contained within the rule for the running job.
-	 * <p>
-	 * Note that <tt>endRule</tt> must be called even if <tt>beginRule</tt> fails.
-	 * The recommended usage is:
-	 * <pre>
-	 * final ISchedulingRule rule = ...;
-	 * try {
-	 * 	manager.beginRule(rule, monitor);
-	 * } finally {
-	 * 	manager.endRule(rule);
-	 * }
-	 * </pre>
-	 * 
-	 * @param rule the rule to begin applying in this thread, or <code>null</code>
-	 * @param monitor a progress monitor, or <code>null</code> if progress
-	 *    reporting and cancellation are not desired
-	 * @throws IllegalArgumentException if the rule is not strictly nested within
-	 * 	all other rules currently active for this thread
-	 * @throws OperationCanceledException if the supplied monitor reports cancelation
-	 * 	before the rule becomes available
-	 * @see ISchedulingRule#contains(ISchedulingRule)
-	 */
-	public void beginRule(ISchedulingRule rule, IProgressMonitor monitor);
-
-	/**
-	 * Cancels all jobs in the given job family.  Jobs in the family that are currently waiting
-	 * will be removed from the queue.  Sleeping jobs will be discarded without having 
-	 * a chance to wake up.  Currently executing jobs will be asked to cancel but there 
-	 * is no guarantee that they will do so.
-	 * 
-	 * @param family the job family to cancel, or <code>null</code> to cancel all jobs
-	 * @see Job#belongsTo(Object)
-	 */
-	public void cancel(Object family);
-
-	/**
-	 * Returns a progress monitor that can be used to provide
-	 * aggregated progress feedback on a set of running jobs. A user
-	 * interface will typically group all jobs in a progress group together,
-	 * providing progress feedback for individual jobs as well as aggregated
-	 * progress for the entire group.  Jobs in the group may be run sequentially,
-	 * in parallel, or some combination of the two.
-	 * <p>
-	 * Recommended usage (this snippet runs two jobs in sequence in a 
-	 * single progress group):
-	 * <pre>
-	 *    Job parseJob, compileJob;
-	 *    IProgressMonitor pm = Platform.getJobManager().createProgressGroup();
-	 *    try {
-	 *       pm.beginTask("Building", 10);
-	 *       parseJob.setProgressGroup(pm, 5);
-	 *       parseJob.schedule();
-	 *       compileJob.setProgressGroup(pm, 5);
-	 *       compileJob.schedule();
-	 *       parseJob.join();
-	 *       compileJob.join();
-	 *    } finally {
-	 *       pm.done();
-	 *    }
-	 * </pre>
-	 * 
-	 * @see Job#setProgressGroup(IProgressMonitor, int)
-	 * @see IProgressMonitor
-	 * @return a progress monitor
-	 */
-	public IProgressMonitor createProgressGroup();
-
-	/**
-	 * Returns the job that is currently running in this thread, or <code>null</code> if there
-	 * is no currently running job.
-	 * 
-	 * @return the job or <code>null</code>
-	 */
-	public Job currentJob();
-
-	/**
-	 * Ends the application of a rule to the calling thread.  Calls to <tt>endRule</tt> 
-	 * must be preceded by a matching call to <tt>beginRule</tt> in the same thread
-	 * with an identical rule instance.
-	 * <p>
-	 * Rules can be nested only if the rule for the inner <tt>beginRule</tt>
-	 * is contained within the rule for the outer <tt>beginRule</tt>.  Also, begin/end
-	 * pairs must be strictly nested.  Only the rule that has most recently begun
-	 * can be ended at any given time.
-	 * 
-	 * @param rule the rule to end applying in this thread
-	 * @throws IllegalArgumentException if this method is called on a rule for which
-	 * there is no matching begin, or that does not match the most recent begin.
-	 * @see ISchedulingRule#contains(ISchedulingRule)
-	 */
-	public void endRule(ISchedulingRule rule);
-
-	/**
-	 * Returns all waiting, executing and sleeping jobs belonging
-	 * to the given family. If no jobs are found, an empty array is returned.
-	 * 
-	 * @param family the job family to find, or <code>null</code> to find all jobs
-	 * @return the job array
-	 * @see Job#belongsTo(Object)
-	 */
-	public Job[] find(Object family);
-
-	/**
-	 * Returns whether the job manager is currently idle.  The job manager is
-	 * idle if no jobs are currently running or waiting to run.
-	 * 
-	 * @return <code>true</code> if the job manager is idle, and 
-	 * <code>false</code> otherwise
-	 * @since 3.1
-	 */
-	public boolean isIdle();
-
-	/**
-	 * Waits until all jobs of the given family are finished.  This method will block the 
-	 * calling thread until all such jobs have finished executing, or until this thread is
-	 * interrupted.   If there are no jobs in 
-	 * the family that are currently waiting, running, or sleeping, this method returns 
-	 * immediately.  Feedback on how the join is progressing is provided to a  progress 
-	 * monitor.
-	 * <p>
-	 * If this method is called while the job manager is suspended, only jobs
-	 * that are currently running will be joined; Once there are no jobs
-	 * in the family in the {@link Job#RUNNING} state, this method returns.
-	 * </p>
-	 * <p>
-	 * Note that there is a deadlock risk when using join.  If the calling thread owns
-	 * a lock or object monitor that the joined thread is waiting for, deadlock 
-	 * will occur. This method can also result in starvation of the current thread if
-	 * another thread continues to add jobs of the given family, or if a
-	 * job in the given family reschedules itself in an infinite loop.
-	 * </p>
-	 * 
-	 * @param family the job family to join, or <code>null</code> to join all jobs.
-	 * @param monitor Progress monitor for reporting progress on how the
-	 * wait is progressing, or <code>null</code> if no progress monitoring is required.
-	 * @exception InterruptedException if this thread is interrupted while waiting
-	 * @exception OperationCanceledException if the progress monitor is canceled while waiting
-	 * @see Job#belongsTo(Object)
-	 * @see #suspend()
-	 */
-	public void join(Object family, IProgressMonitor monitor) throws InterruptedException, OperationCanceledException;
-
-	/**
-	 * Creates a new lock object.  All lock objects supplied by the job manager
-	 * know about each other and will always avoid circular deadlock amongst
-	 * themselves.
-	 * 
-	 * @return the new lock object
-	 */
-	public ILock newLock();
-
-	/**
-	 * Removes a job listener from the job manager.  
-	 * Has no effect if an identical listener is not already registered.
-	 * 
-	 * @param listener the listener to be removed
-	 * @see #addJobChangeListener(IJobChangeListener)
-	 * @see IJobChangeListener
-	 */
-	public void removeJobChangeListener(IJobChangeListener listener);
-
-	/**
-	 * Resumes execution of jobs after a previous <code>suspend</code>.  All
-	 * jobs that were sleeping or waiting prior to the suspension, or that were
-	 * scheduled while the job manager was suspended, will now be eligible
-	 * for execution.
-	 * <p>
-	 * Calling this method on a rule that is not suspended  has no effect.  If another 
-	 * thread also owns the rule at the time this method is called, then the rule will 
-	 * not be resumed until all threads have released the rule.
-	 * 
-	 * @deprecated This method is not safe and should not be used.
-	 * Suspending a scheduling rule violates the thread safety
-	 * of clients that use scheduling rules as a mutual exclusion mechanism,
-	 * and can result in concurrency problems in all clients that use the suspended rule.
-	 * @see #suspend(ISchedulingRule, IProgressMonitor)
-	 */
-	public void resume(ISchedulingRule rule);
-
-	/**
-	 * Resumes execution of jobs after a previous <code>suspend</code>.  All
-	 * jobs that were sleeping or waiting prior to the suspension, or that were
-	 * scheduled while the job manager was suspended, will now be eligible
-	 * for execution.
-	 * <p>
-	 * Calling <code>resume</code> when the job manager is not suspended
-	 * has no effect.
-	 * 
-	 * @see #suspend()
-	 */
-	public void resume();
-
-	/**
-	 * Provides a hook that is notified whenever a thread is about to wait on a lock,
-	 * or when a thread is about to release a lock.  This hook must only be set once.
-	 * <p>
-	 * This method is for internal use by the platform-related plug-ins.  
-	 * Clients should not call this method.
-	 * </p>
-	 * @see LockListener
-	 */
-	public void setLockListener(LockListener listener);
-
-	/**
-	 * Registers a progress provider with the job manager.  If there was a
-	 * provider already registered, it is replaced.
-	 * <p>
-	 * This method is for internal use by the platform-related plug-ins.  
-	 * Clients should not call this method.
-	 * </p>
-	 * 
-	 * @param provider the new provider, or <code>null</code> if no progress
-	 * is needed
-	 */
-	public void setProgressProvider(ProgressProvider provider);
-
-	/**
-	 * Suspends execution of all jobs.  Jobs that are already running
-	 * when this method is invoked will complete as usual, but all sleeping and
-	 * waiting jobs will not be executed until the job manager is resumed.
-	 * <p>
-	 * The job manager will remain suspended until a subsequent call to
-	 * <code>resume</code>.  Further calls to <code>suspend</code>
-	 * when the job manager is already suspended are ignored.
-	 * <p>
-	 * All attempts to join sleeping and waiting jobs while the job manager is
-	 * suspended will return immediately.
-	 * <p>
-	 * Note that this very powerful function should be used with extreme caution.
-	 * Suspending the job manager will prevent all jobs in the system from executing,
-	 * which may have adverse affects on components that are relying on
-	 * execution of jobs. The job manager should never be suspended without intent
-	 * to resume execution soon afterwards.
-	 * 
-	 * @see #resume()
-	 * @see #join(Object, IProgressMonitor)
-	 */
-	public void suspend();
-
-	/**
-	 * Defers execution of all jobs with scheduling rules that conflict with the
-	 * given rule. The caller will be blocked until all currently executing jobs with
-	 * conflicting rules are completed.  Conflicting jobs that are sleeping or waiting at
-	 * the time this method is called will not be executed until the rule is resumed.
-	 * <p>
-	 * While a rule is suspended, all calls to <code>beginRule</code> and 
-	 * <code>endRule</code> on a suspended rule will not block the caller.
-	 * The rule remains suspended until a subsequent call to
-	 * <code>resume(ISchedulingRule)</code> with the identical rule instance.  
-	 * Further calls to <code>suspend</code> with an identical rule prior to calling
-	 * <code>resume</code> are ignored.
-	 * </p>
-	 * <p>
-	 * This method is long-running; progress and cancelation are provided by
-	 * the given progress monitor. In the case of cancelation, the rule will
-	 * not be suspended.
-	 * </p>
-	 * Note: this very powerful function should be used with extreme caution.
-	 * Suspending rules will prevent jobs in the system from executing, which may 
-	 * have adverse effects on components that are relying on execution of jobs. 
-	 * The job manager should never be suspended without intent to resume 
-	 * execution soon afterwards. Deadlock will result if the thread responsible
-	 * for resuming the rule attempts to join a suspended job.
-	 * 
-	 * @deprecated This method is not safe and should not be used.
-	 * Suspending a scheduling rule violates the thread safety
-	 * of clients that use scheduling rules as a mutual exclusion mechanism,
-	 * and can result in concurrency problems in all clients that use the suspended rule.
-	 * @param rule The scheduling rule to suspend. Must not be <code>null</code>.
-	 * @param monitor a progress monitor, or <code>null</code> if progress
-	 * reporting is not desired
-	 * @exception OperationCanceledException if the operation is canceled. 
-	 * Cancelation can occur even if no progress monitor is provided.
-	 * @see #resume(ISchedulingRule)
-	 */
-	public void suspend(ISchedulingRule rule, IProgressMonitor monitor);
-
-	/**
-	 * Requests that all jobs in the given job family be suspended.  Jobs currently 
-	 * waiting to be run will be removed from the queue and moved into the 
-	 * <code>SLEEPING</code> state.  Jobs that have been put to sleep
-	 * will remain in that state until either resumed or canceled.  This method has
-	 * no effect on jobs that are not currently waiting to be run.
-	 * <p>
-	 * Sleeping jobs can be resumed using <code>wakeUp</code>.
-	 * 
-	 * @param family the job family to sleep, or <code>null</code> to sleep all jobs.
-	 * @see Job#belongsTo(Object)
-	 */
-	public void sleep(Object family);
-
-	/**
-	 * Transfers ownership of a scheduling rule to another thread.  The identical
-	 * scheduling rule must currently be owned by the calling thread as a result of 
-	 * a previous call to <code>beginRule</code>.  The destination thread must
-	 * not already own a scheduling rule.
-	 * <p>
-	 * Calling this method is equivalent to atomically calling <code>endRule</code> 
-	 * in the calling thread followed by an immediate <code>beginRule</code> in 
-	 * the destination thread.  The destination thread is responsible for subsequently 
-	 * calling <code>endRule</code> when it is finished using the rule.
-	 * <p>
-	 * This method has no effect when the destination thread is the same as the
-	 * calling thread.
-	 * 
-	 * @param rule The scheduling rule to transfer
-	 * @param destinationThread The new owner for the transferred rule.
-	 * @since 3.1
-	 */
-	public void transferRule(ISchedulingRule rule, Thread destinationThread);
-
-	/**
-	 * Resumes scheduling of all sleeping jobs in the given family.  This method
-	 * has no effect on jobs in the family that are not currently sleeping.
-	 * 
-	 * @param family the job family to wake up, or <code>null</code> to wake up all jobs
-	 * @see Job#belongsTo(Object)
-	 */
-	public void wakeUp(Object family);
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/IJobStatus.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/IJobStatus.java
deleted file mode 100644
index cbcb855..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/IJobStatus.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.jobs;
-
-import org.eclipse.core.runtime.IStatus;
-
-/**
- * Represents status relating to the execution of jobs.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- *
- * @see org.eclipse.core.runtime.IStatus
- */
-public interface IJobStatus extends IStatus {
-	/**
-	 * Returns the job associated with this status.
-	 * 
-	 * @return the job associated with this status
-	 */
-	public Job getJob();
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/ILock.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/ILock.java
deleted file mode 100644
index 539e807..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/ILock.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.jobs;
-
-/**
- * A lock is used to control access to an exclusive resource.
- * <p>
- * Locks are reentrant.  That is, they can be acquired multiple times by the same thread
- * without releasing.  Locks are only released when the number of successful acquires 
- * equals the number of successful releases.
- * </p><p>
- * Locks are capable of detecting and recovering from programming errors that cause
- * circular waiting deadlocks. When a deadlock between two or more <tt>ILock</tt> 
- * instances is detected, detailed debugging information is printed to the log file.  The 
- * locks will then automatically recover from the deadlock by employing a release 
- * and wait strategy. One thread will lose control of the locks it owns, thus breaking 
- * the deadlock and  allowing other threads to proceed.  Once that thread's locks are 
- * all available, it will be given exclusive access to all its locks and allowed to proceed.  
- * A thread can only lose locks while it is waiting on an <tt>acquire()</tt> call. 
- * 
- * </p><p>
- * Successive acquire attempts by different threads are queued and serviced on
- * a first come, first served basis.
- * </p><p>
- * It is very important that acquired locks eventually get released.  Calls to release
- * should be done in a finally block to ensure they execute.  For example:
- * <pre>
- * try {
- * 	lock.acquire();
- * 	// ... do work here ...
- * } finally {
- * 	lock.release();
- * }
- * </pre>
- * Note: although <tt>lock.acquire</tt> should never fail, it is good practice to place 
- * it inside the try block anyway.  Releasing without acquiring is far less catastrophic 
- * than acquiring without releasing.
- * </p><p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @see IJobManager#newLock()
- * @since 3.0
- */
-public interface ILock {
-	/**
-	 * Attempts to acquire this lock.  If the lock is in use and the specified delay is
-	 * greater than zero, the calling thread will block until one of the following happens:
-	 * <ul>
-	 * <li>This lock is available</li>
-	 * <li>The thread is interrupted</li>
-	 * <li>The specified delay has elapsed</li>
-	 * </ul>
-	 * <p>
-	 * While a thread is waiting,  locks it already owns may be granted to other threads 
-	 * if necessary to break a deadlock.  In this situation, the calling thread may be blocked
-	 * for longer than the specified delay.  On returning from this call, the calling thread 
-	 * will once again have exclusive access to any other locks it owned upon entering 
-	 * the acquire method.
-	 * 
-	 * @param delay the number of milliseconds to delay
-	 * @return <code>true</code> if the lock was successfully acquired, and 
-	 * <code>false</code> otherwise.
-	 * @exception InterruptedException if the thread was interrupted
-	 */
-	public boolean acquire(long delay) throws InterruptedException;
-
-	/**
-	 * Acquires this lock.  If the lock is in use, the calling thread will block until the lock 
-	 * becomes available.  If the calling thread owns several locks, it will be blocked
-	 * until all threads it requires become available, or until the thread is interrupted.
-	 * While a thread is waiting, its locks may be granted to other threads if necessary
-	 * to break a deadlock.  On returning from this call, the calling thread will 
-	 * have exclusive access to this lock, and any other locks it owned upon
-	 * entering the acquire method.
-	 * <p>
-	 * This implementation ignores attempts to interrupt the thread.  If response to
-	 * interruption is needed, use the method <code>acquire(long)</code>
-	 */
-	public void acquire();
-
-	/**
-	 * Returns the number of nested acquires on this lock that have not been released.
-	 * This is the number of times that release() must be called before the lock is
-	 * freed.
-	 * 
-	 * @return the number of nested acquires that have not been released
-	 */
-	public int getDepth();
-
-	/**
-	 * Releases this lock. Locks must only be released by the thread that currently
-	 * owns the lock.
-	 */
-	public void release();
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/ISchedulingRule.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/ISchedulingRule.java
deleted file mode 100644
index 3f08a7c..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/ISchedulingRule.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.jobs;
-
-/**
- * Scheduling rules are used by jobs to indicate when they need exclusive access
- * to a resource.  Scheduling rules can also be applied synchronously to a thread
- * using <tt>IJobManager.beginRule(ISchedulingRule)</tt> and 
- * <tt>IJobManager.endRule(ISchedulingRule)</tt>.  The job manager guarantees that 
- * no two jobs with conflicting scheduling rules will run concurrently. 
- * Multiple rules can be applied to a given thread only if the outer rule explicitly 
- * allows the nesting as specified by the <code>contains</code> method.  
- * <p>
- * Clients may implement this interface.
- * 
- * @see Job#getRule()
- * @see Job#setRule(ISchedulingRule)
- * @see Job#schedule(long)
- * @see IJobManager#beginRule(ISchedulingRule, org.eclipse.core.runtime.IProgressMonitor)
- * @see IJobManager#endRule(ISchedulingRule)
- * @since 3.0
- */
-public interface ISchedulingRule {
-	/**
-	 * Returns whether this scheduling rule completely contains another scheduling
-	 * rule.  Rules can only be nested within a thread if the inner rule is completely 
-	 * contained within the outer rule.
-	 * <p>
-	 * Implementations of this method must obey the rules of a partial order relation
-	 * on the set of all scheduling rules.  In particular, implementations must be reflexive
-	 * (a.contains(a) is always true), antisymmetric (a.contains(b) and b.contains(a) iff a.equals(b), 
-	 * and transitive (if a.contains(b) and b.contains(c), then a.contains(c)).  Implementations
-	 * of this method must return <code>false</code> when compared to a rule they
-	 * know nothing about.
-	 * 
-	 * @param rule the rule to check for containment
-	 * @return <code>true</code> if this rule contains the given rule, and 
-	 * <code>false</code> otherwise.
-	 */
-	public boolean contains(ISchedulingRule rule);
-
-	/**
-	 * Returns whether this scheduling rule is compatible with another scheduling rule.
-	 * If <code>true</code> is returned, then no job with this rule will be run at the 
-	 * same time as a job with the conflicting rule.  If <code>false</code> is returned, 
-	 * then the job manager is free to run jobs with these rules at the same time.
-	 * <p>
-	 * Implementations of this method must be reflexive, symmetric, and consistent,
-	 * and must return <code>false</code> when compared  to a rule they know 
-	 * nothing about.
-	 *
-	 * @param rule the rule to check for conflicts
-	 * @return <code>true</code> if the rule is conflicting, and <code>false</code>
-	 * 	otherwise.
-	 */
-	public boolean isConflicting(ISchedulingRule rule);
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/Job.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/Job.java
deleted file mode 100644
index ebfa28c..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/Job.java
+++ /dev/null
@@ -1,653 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.jobs;
-
-import org.eclipse.core.internal.jobs.InternalJob;
-import org.eclipse.core.internal.jobs.JobManager;
-import org.eclipse.core.runtime.*;
-
-/**
- * Jobs are units of runnable work that can be scheduled to be run with the job
- * manager.  Once a job has completed, it can be scheduled to run again (jobs are
- * reusable).
- * <p>
- * Jobs have a state that indicates what they are currently doing.  When constructed,
- * jobs start with a state value of <code>NONE</code>.  When a job is scheduled
- * to be run, it moves into the <code>WAITING</code> state.  When a job starts
- * running, it moves into the <code>RUNNING</code> state.  When execution finishes
- * (either normally or through cancelation), the state changes back to 
- * <code>NONE</code>.  
- * </p><p>
- * A job can also be in the <code>SLEEPING</code> state.  This happens if a user
- * calls Job.sleep() on a waiting job, or if a job is scheduled to run after a specified
- * delay.  Only jobs in the <code>WAITING</code> state can be put to sleep.  
- * Sleeping jobs can be woken at any time using Job.wakeUp(), which will put the
- * job back into the <code>WAITING</code> state.
- * </p><p>
- * Jobs can be assigned a priority that is used as a hint about how the job should
- * be scheduled.  There is no guarantee that jobs of one priority will be run before
- * all jobs of lower priority.  The javadoc for the various priority constants provide
- * more detail about what each priority means.  By default, jobs start in the 
- * <code>LONG</code> priority class.
- * 
- * @see IJobManager
- * @since 3.0
- */
-public abstract class Job extends InternalJob implements IAdaptable {
-
-	/**
-	 * Job status return value that is used to indicate asynchronous job completion.
-	 * @see Job#run(IProgressMonitor)
-	 * @see Job#done(IStatus)
-	 */
-	public static final IStatus ASYNC_FINISH = new Status(IStatus.OK, JobManager.PI_JOBS, 1, "", null);//$NON-NLS-1$
-
-	/* Job priorities */
-	/** 
-	 * Job priority constant (value 10) for interactive jobs.
-	 * Interactive jobs generally have priority over all other jobs.
-	 * Interactive jobs should be either fast running or very low on CPU
-	 * usage to avoid blocking other interactive jobs from running.
-	 * 
-	 * @see #getPriority()
-	 * @see #setPriority(int)
-	 * @see #run(IProgressMonitor)
-	 */
-	public static final int INTERACTIVE = 10;
-	/** 
-	 * Job priority constant (value 20) for short background jobs.
-	 * Short background jobs are jobs that typically complete within a second,
-	 * but may take longer in some cases.  Short jobs are given priority
-	 * over all other jobs except interactive jobs.
-	 * 
-	 * @see #getPriority()
-	 * @see #setPriority(int)
-	 * @see #run(IProgressMonitor)
-	 */
-	public static final int SHORT = 20;
-	/** 
-	 * Job priority constant (value 30) for long-running background jobs.
-	 * 
-	 * @see #getPriority()
-	 * @see #setPriority(int)
-	 * @see #run(IProgressMonitor)
-	 */
-	public static final int LONG = 30;
-	/** 
-	 * Job priority constant (value 40) for build jobs.  Build jobs are
-	 * generally run after all other background jobs complete.
-	 * 
-	 * @see #getPriority()
-	 * @see #setPriority(int)
-	 * @see #run(IProgressMonitor)
-	 */
-	public static final int BUILD = 40;
-
-	/** 
-	 * Job priority constant (value 50) for decoration jobs.
-	 * Decoration jobs have lowest priority.  Decoration jobs generally
-	 * compute extra information that the user may be interested in seeing
-	 * but is generally not waiting for.
-	 * 
-	 * @see #getPriority()
-	 * @see #setPriority(int)
-	 * @see #run(IProgressMonitor)
-	 */
-	public static final int DECORATE = 50;
-	/** 
-	 * Job state code (value 0) indicating that a job is not 
-	 * currently sleeping, waiting, or running (i.e., the job manager doesn't know 
-	 * anything about the job). 
-	 * 
-	 * @see #getState()
-	 */
-	public static final int NONE = 0;
-	/** 
-	 * Job state code (value 1) indicating that a job is sleeping.
-	 * 
-	 * @see #run(IProgressMonitor)
-	 * @see #getState()
-	 */
-	public static final int SLEEPING = 0x01;
-	/** 
-	 * Job state code (value 2) indicating that a job is waiting to be run.
-	 * 
-	 * @see #getState()
-	 */
-	public static final int WAITING = 0x02;
-	/** 
-	 * Job state code (value 4) indicating that a job is currently running
-	 * 
-	 * @see #getState()
-	 */
-	public static final int RUNNING = 0x04;
-
-	/**
-	 * Returns the job manager.
-	 * 
-	 * @return the job manager
-	 * @since org.eclipse.core.jobs 3.2
-	 */
-	public static final IJobManager getJobManager() {
-		return manager;
-	}
-
-	/**
-	 * Creates a new job with the specified name.  The job name is a human-readable
-	 * value that is displayed to users.  The name does not need to be unique, but it
-	 * must not be <code>null</code>.
-	 * 
-	 * @param name the name of the job.
-	 */
-	public Job(String name) {
-		super(name);
-	}
-
-	/**
-	 * Registers a job listener with this job
-	 * Has no effect if an identical listener is already registered.
-	 * 
-	 * @param listener the listener to be added.
-	 */
-	public final void addJobChangeListener(IJobChangeListener listener) {
-		super.addJobChangeListener(listener);
-	}
-
-	/**
-	 * Returns whether this job belongs to the given family.  Job families are
-	 * represented as objects that are not interpreted or specified in any way
-	 * by the job manager.  Thus, a job can choose to belong to any number of
-	 * families.
-	 * <p>
-	 * Clients may override this method.  This default implementation always returns
-	 * <code>false</code>.  Overriding implementations must return <code>false</code>
-	 * for families they do not recognize.
-	 * </p>
-	 * 
-	 * @param family the job family identifier
-	 * @return <code>true</code> if this job belongs to the given family, and 
-	 * <code>false</code> otherwise.
-	 */
-	public boolean belongsTo(Object family) {
-		return false;
-	}
-
-	/**
-	 * Stops the job.  If the job is currently waiting,
-	 * it will be removed from the queue.  If the job is sleeping,
-	 * it will be discarded without having a chance to resume and its sleeping state
-	 * will be cleared.  If the job is currently executing, it will be asked to
-	 * stop but there is no guarantee that it will do so.
-	 * 
-	 * @return <code>false</code> if the job is currently running (and thus may not
-	 * respond to cancelation), and <code>true</code> in all other cases.
-	 */
-	public final boolean cancel() {
-		return super.cancel();
-	}
-
-	/**
-	 * Jobs that complete their execution asynchronously must indicate when they
-	 * are finished by calling this method.  This method must not be called by
-	 * a job that has not indicated that it is executing asynchronously.
-	 * <p>
-	 * This method must not be called from within the scope of a job's <code>run</code>
-	 * method.  Jobs should normally indicate completion by returning an appropriate
-	 * status from the <code>run</code> method.  Jobs that return a status of
-	 * <code>ASYNC_FINISH</code> from their run method must later call 
-	 * <code>done</code> to indicate completion.
-	 * 
-	 * @param result a status object indicating the result of the job's execution.
-	 * @see #ASYNC_FINISH
-	 * @see #run(IProgressMonitor)
-	 */
-	public final void done(IStatus result) {
-		super.done(result);
-	}
-
-	/**
-	 * Returns the human readable name of this job.  The name is never 
-	 * <code>null</code>.
-	 * 
-	 * @return the name of this job
-	 */
-	public final String getName() {
-		return super.getName();
-	}
-
-	/**
-	 * Returns the priority of this job.  The priority is used as a hint when the job
-	 * is scheduled to be run.
-	 * 
-	 * @return the priority of the job.  One of INTERACTIVE, SHORT, LONG, BUILD, 
-	 * 	or DECORATE.
-	 */
-	public final int getPriority() {
-		return super.getPriority();
-	}
-
-	/**
-	 * Returns the value of the property of this job identified by the given key, 
-	 * or <code>null</code> if this job has no such property.
-	 *
-	 * @param key the name of the property
-	 * @return the value of the property, 
-	 *     or <code>null</code> if this job has no such property
-	 * @see #setProperty(QualifiedName, Object)
-	 */
-	public final Object getProperty(QualifiedName key) {
-		return super.getProperty(key);
-	}
-
-	/**
-	 * Returns the result of this job's last run.
-	 * 
-	 * @return the result of this job's last run, or <code>null</code> if this
-	 * job has never finished running.
-	 */
-	public final IStatus getResult() {
-		return super.getResult();
-	}
-
-	/**
-	 * Returns the scheduling rule for this job.  Returns <code>null</code> if this job has no
-	 * scheduling rule.
-	 * 
-	 * @return the scheduling rule for this job, or <code>null</code>.
-	 * @see ISchedulingRule
-	 * @see #setRule(ISchedulingRule)
-	 */
-	public final ISchedulingRule getRule() {
-		return super.getRule();
-	}
-
-	/**
-	 * Returns the state of the job. Result will be one of:
-	 * <ul>
-	 * <li><code>Job.RUNNING</code> - if the job is currently running.</li>
-	 * <li><code>Job.WAITING</code> - if the job is waiting to be run.</li>
-	 * <li><code>Job.SLEEPING</code> - if the job is sleeping.</li>
-	 * <li><code>Job.NONE</code> - in all other cases.</li>
-	 * </ul>
-	 * <p>
-	 * Note that job state is inherently volatile, and in most cases clients 
-	 * cannot rely on the result of this method being valid by the time the 
-	 * result is obtained.  For example, if <tt>getState</tt> returns 
-	 * <tt>RUNNING</tt>,  the job may have actually completed by the 
-	 * time the <tt>getState</tt> method returns.  All clients can infer from 
-	 * invoking this method is that  the job was recently in the returned state.
-	 * 
-	 * @return the job state
-	 */
-	public final int getState() {
-		return super.getState();
-	}
-
-	/**
-	 * Returns the thread that this job is currently running in.
-	 * 
-	 * @return the thread this job is running in, or <code>null</code>
-	 * if this job is not running or the thread is unknown.
-	 */
-	public final Thread getThread() {
-		return super.getThread();
-	}
-
-	/**
-	 * Returns whether this job is blocking another non-system job from 
-	 * starting due to a conflicting scheduling rule.  Returns <code>false</code> 
-	 * if this job is not running, or is not blocking any other job.
-	 * 
-	 * @return <code>true</code> if this job is blocking a waiting non-system
-	 * job, and <code>false</code> otherwise.
-	 * @see #getRule()
-	 * @see #isSystem()
-	 */
-	public final boolean isBlocking() {
-		return super.isBlocking();
-	}
-
-	/**
-	 * Returns whether this job is a system job.  System jobs are typically not 
-	 * revealed to users in any UI presentation of jobs.  Other than their UI presentation,
-	 * system jobs act exactly like other jobs.  If this value is not explicitly set, jobs
-	 * are treated as non-system jobs.  The default value is <code>false</code>.
-	 * 
-	 * @return <code>true</code> if this job is a system job, and
-	 * <code>false</code> otherwise.
-	 * @see #setSystem(boolean)
-	 */
-	public final boolean isSystem() {
-		return super.isSystem();
-	}
-
-	/**
-	 * Returns whether this job has been directly initiated by a UI end user. 
-	 * These jobs may be presented differently in the UI.  The default value
-	 * is <code>false</code>.
-	 * 
-	 * @return <code>true</code> if this job is a user-initiated job, and
-	 * <code>false</code> otherwise.
-	 * @see #setUser(boolean)
-	 */
-	public final boolean isUser() {
-		return super.isUser();
-	}
-
-	/**
-	 * Waits until this job is finished.  This method will block the calling thread until the 
-	 * job has finished executing, or until this thread has been interrupted.  If the job 
-	 * has not been scheduled, this method returns immediately.
-	 * <p>
-	 * If this method is called on a job that reschedules itself from within the 
-	 * <tt>run</tt> method, the join will return at the end of the first execution.
-	 * In other words, join will return the first time this job exits the
-	 * <tt>RUNNING</tt> state, or as soon as this job enters the <tt>NONE</tt> state.
-	 * </p>
-	 * <p>
-	 * If this method is called while the job manager is suspended, this job
-	 * will only be joined if it is already running; if this job is waiting or sleeping,
-	 * this method returns immediately.
-	 * </p>
-	 * <p>
-	 * Note that there is a deadlock risk when using join.  If the calling thread owns
-	 * a lock or object monitor that the joined thread is waiting for, deadlock 
-	 * will occur.
-	 * </p>
-	 * 
-	 * @exception InterruptedException if this thread is interrupted while waiting
-	 * @see ILock
-	 * @see IJobManager#suspend()
-	 */
-	public final void join() throws InterruptedException {
-		super.join();
-	}
-
-	/**
-	 * Removes a job listener from this job.
-	 * Has no effect if an identical listener is not already registered.
-	 * 
-	 * @param listener the listener to be removed
-	 */
-	public final void removeJobChangeListener(IJobChangeListener listener) {
-		super.removeJobChangeListener(listener);
-	}
-
-	/**
-	 * Executes this job.  Returns the result of the execution.
-	 * <p>
-	 * The provided monitor can be used to report progress and respond to 
-	 * cancellation.  If the progress monitor has been canceled, the job
-	 * should finish its execution at the earliest convenience and return a result
-	 * status of severity <code>IStatus.CANCEL</code>.  The singleton
-	 * cancel status <code>Status.CANCEL_STATUS</code> can be used for
-	 * this purpose.
-	 * <p>
-	 * This method must not be called directly by clients.  Clients should call
-	 * <code>schedule</code>, which will in turn cause this method to be called.
-	 * <p>
-	 * Jobs can optionally finish their execution asynchronously (in another thread) by 
-	 * returning a result status of <code>Job.ASYNC_FINISH</code>.  Jobs that finish
-	 * asynchronously <b>must</b> specify the execution thread by calling
-	 * <code>setThread</code>, and must indicate when they are finished by calling
-	 * the method <code>done</code>.
-	 * 
-	 * @param monitor the monitor to be used for reporting progress and
-	 * responding to cancelation. The monitor is never <code>null</code>
-	 * @return resulting status of the run. The result must not be <code>null</code>
-	 * @see #ASYNC_FINISH
-	 * @see #done(IStatus)
-	 */
-	protected abstract IStatus run(IProgressMonitor monitor);
-
-	/**
-	 * Schedules this job to be run.  The job is added to a queue of waiting
-	 * jobs, and will be run when it arrives at the beginning of the queue.
-	 * <p>
-	 * This is a convenience method, fully equivalent to 
-	 * <code>schedule(0L)</code>.
-	 * </p>
-	 * @see #schedule(long)
-	 */
-	public final void schedule() {
-		super.schedule(0L);
-	}
-
-	/**
-	 * Schedules this job to be run after a specified delay.  After the specified delay,
-	 * the job is added to a queue of waiting jobs, and will be run when it arrives 
-	 * at the beginning of the queue.	Jobs of equal priority and <code>delay</code> with 
-	 * conflicting scheduling rules are guaranteed to run in the order they are 
-	 * scheduled. No guarantees are made about the relative execution order of jobs 
-	 * with unrelated or <code>null</code> scheduling rules, or different priorities.
-	 * <p>
-	 * If this job is currently running, it will be rescheduled with the specified
-	 * delay as soon as it finishes.  If this method is called multiple times
-	 * while the job is running, the job will still only be rescheduled once,
-	 * with the most recent delay value that was provided.
-	 * </p><p>
-	 * Scheduling a job that is waiting or sleeping has no effect.
-	 * </p>
-	 * 
-	 * @param delay a time delay in milliseconds before the job should run
-	 * @see ISchedulingRule
-	 */
-	public final void schedule(long delay) {
-		super.schedule(delay);
-	}
-
-	/**
-	 * Changes the name of this job.  The job name is a human-readable
-	 * value that is displayed to users.  The name does not need to be unique, but it
-	 * must not be <code>null</code>.
-	 * 
-	 * @param name the name of the job.
-	 */
-	public final void setName(String name) {
-		super.setName(name);
-	}
-
-	/**
-	 * Sets the priority of the job.  This will not affect the execution of
-	 * a running job, but it will affect how the job is scheduled while
-	 * it is waiting to be run.
-	 * 
-	 * @param priority the new job priority.  One of
-	 * INTERACTIVE, SHORT, LONG, BUILD, or DECORATE.
-	 */
-	public final void setPriority(int priority) {
-		super.setPriority(priority);
-	}
-
-	/**
-	 * Associates this job with a progress group.  Progress feedback 
-	 * on this job's next execution will be displayed together with other
-	 * jobs in that group. The provided monitor must be a monitor 
-	 * created by the method <tt>IJobManager.createProgressGroup</tt>
-	 * and must have at least <code>ticks</code> units of available work.
-	 * <p>
-	 * The progress group must be set before the job is scheduled.
-	 * The group will be used only for a single invocation of the job's 
-	 * <tt>run</tt> method, after which any association of this job to the 
-	 * group will be lost.
-	 * 
-	 * @see IJobManager#createProgressGroup()
-	 * @param group The progress group to use for this job
-	 * @param ticks the number of work ticks allocated from the
-	 *    parent monitor, or IProgressMonitor.UNKNOWN
-	 */
-	public final void setProgressGroup(IProgressMonitor group, int ticks) {
-		super.setProgressGroup(group, ticks);
-	}
-
-	/**
-	 * Sets the value of the property of this job identified
-	 * by the given key. If the supplied value is <code>null</code>,
-	 * the property is removed from this resource. 
-	 * <p>
-	 * Properties are intended to be used as a caching mechanism
-	 * by ISV plug-ins. They allow key-object associations to be stored with
-	 * a job instance.  These key-value associations are maintained in 
-	 * memory (at all times), and the information is never discarded automatically.
-	 * </p><p>
-	 * The qualifier part of the property name must be the unique identifier
-	 * of the declaring plug-in (e.g. <code>"com.example.plugin"</code>).
-	 * </p>
-	 *
-	 * @param key the qualified name of the property
-	 * @param value the value of the property, 
-	 *     or <code>null</code> if the property is to be removed
-	 * @see #getProperty(QualifiedName)
-	 */
-	public void setProperty(QualifiedName key, Object value) {
-		super.setProperty(key, value);
-	}
-
-	/**
-	 * Sets the scheduling rule to be used when scheduling this job.  This method
-	 * must be called before the job is scheduled.
-	 * 
-	 * @param rule the new scheduling rule, or <code>null</code> if the job
-	 * should have no scheduling rule
-	 * @see #getRule()
-	 */
-	public final void setRule(ISchedulingRule rule) {
-		super.setRule(rule);
-	}
-
-	/**
-	 * Sets whether or not this job is a system job.  System jobs are typically not 
-	 * revealed to users in any UI presentation of jobs.  Other than their UI presentation,
-	 * system jobs act exactly like other jobs.  If this value is not explicitly set, jobs
-	 * are treated as non-system jobs. This method must be called before the job 
-	 * is scheduled.
-	 * 
-	 * @param value <code>true</code> if this job should be a system job, and
-	 * <code>false</code> otherwise.
-	 * @see #isSystem()
-	 */
-	public final void setSystem(boolean value) {
-		super.setSystem(value);
-	}
-
-	/**
-	 * Sets whether or not this job has been directly initiated by a UI end user. 
-	 * These jobs may be presented differently in the UI. This method must be 
-	 * called before the job is scheduled.
-	 * 
-	 * @param value <code>true</code> if this job is a user-initiated job, and
-	 * <code>false</code> otherwise.
-	 * @see #isUser()
-	 */
-	public final void setUser(boolean value) {
-		super.setUser(value);
-	}
-
-	/**
-	 * Sets the thread that this job is currently running in, or <code>null</code>
-	 * if this job is not running or the thread is unknown.
-	 * <p>
-	 * Jobs that use the <code>Job.ASYNC_FINISH</code> return code should tell 
-	 * the job what thread it is running in.  This is used to prevent deadlocks.
-	 * 
-	 * @param thread the thread that this job is running in.
-	 * 
-	 * @see #ASYNC_FINISH
-	 * @see #run(IProgressMonitor)
-	 */
-	public final void setThread(Thread thread) {
-		super.setThread(thread);
-	}
-
-	/**
-	 * Returns whether this job should be run.
-	 * If <code>false</code> is returned, this job will be discarded by the job manager
-	 * without running.
-	 * <p>
-	 * This method is called immediately prior to calling the job's
-	 * run method, so it can be used for last minute pre-condition checking before
-	 * a job is run. This method must not attempt to schedule or change the
-	 * state of any other job.
-	 * </p><p>
-	 * Clients may override this method.  This default implementation always returns
-	 * <code>true</code>.
-	 * </p>
-	 * 
-	 * @return <code>true</code> if this job should be run 
-	 *   and <code>false</code> otherwise
-	 */
-	public boolean shouldRun() {
-		return true;
-	}
-
-	/**
-	 * Returns whether this job should be scheduled.
-	 * If <code>false</code> is returned, this job will be discarded by the job manager
-	 * without being added to the queue.
-	 * <p>
-	 * This method is called immediately prior to adding the job to the waiting job
-	 * queue.,so it can be used for last minute pre-condition checking before
-	 * a job is scheduled.
-	 * </p><p>
-	 * Clients may override this method.  This default implementation always returns
-	 * <code>true</code>.
-	 * </p>
-	 * 
-	 * @return <code>true</code> if the job manager should schedule this job
-	 *   and <code>false</code> otherwise
-	 */
-	public boolean shouldSchedule() {
-		return true;
-	}
-
-	/**
-	 * Requests that this job be suspended.  If the job is currently waiting to be run, it 
-	 * will be removed from the queue move into the <code>SLEEPING</code> state.
-	 * The job will remain asleep until either resumed or canceled.  If this job is not
-	 * currently waiting to be run, this method has no effect.
-	 * <p>
-	 * Sleeping jobs can be resumed using <code>wakeUp</code>.
-	 * 
-	 * @return <code>false</code> if the job is currently running (and thus cannot
-	 * be put to sleep), and <code>true</code> in all other cases
-	 * @see #wakeUp()
-	 */
-	public final boolean sleep() {
-		return super.sleep();
-	}
-
-	/**
-	 * Puts this job immediately into the <code>WAITING</code> state so that it is 
-	 * eligible for immediate execution. If this job is not currently sleeping, 
-	 * the request is ignored.
-	 * <p>
-	 * This is a convenience method, fully equivalent to 
-	 * <code>wakeUp(0L)</code>.
-	 * </p>
-	 * @see #sleep()
-	 */
-	public final void wakeUp() {
-		super.wakeUp(0L);
-	}
-
-	/**
-	 * Puts this job back into the <code>WAITING</code> state after
-	 * the specified delay. This is equivalent to canceling the sleeping job and
-	 * rescheduling with the given delay.  If this job is not currently sleeping, 
-	 * the request  is ignored.
-	 * 
-	 * @param delay the number of milliseconds to delay
-	 * @see #sleep()
-	 */
-	public final void wakeUp(long delay) {
-		super.wakeUp(delay);
-	}
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/JobChangeAdapter.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/JobChangeAdapter.java
deleted file mode 100644
index 55fbdda..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/JobChangeAdapter.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.jobs;
-
-/**
- * This adapter class provides default implementations for the
- * methods described by the <code>IJobChangeListener</code> interface.
- * <p>
- * Classes that wish to listen to the progress of scheduled jobs can
- * extend this class and override only the methods which they are
- * interested in.
- * </p>
- *
- * @see IJobChangeListener
- * @since 3.0
- */
-public class JobChangeAdapter implements IJobChangeListener {
-	/* (non-Javadoc)
-	 * @see IJobChangeListener#aboutToRun(IJobChangeEvent)
-	 * This default implementation does nothing
-	 */
-	public void aboutToRun(IJobChangeEvent event) {
-		// do nothing
-	}
-
-	/* (non-Javadoc)
-	 * @see IJobChangeListener#awake(IJobChangeEvent)
-	 * This default implementation does nothing
-	 */
-	public void awake(IJobChangeEvent event) {
-		// do nothing
-	}
-
-	/* (non-Javadoc)
-	 * @see IJobChangeListener#done(IJobChangeEvent)
-	 * This default implementation does nothing
-	 */
-	public void done(IJobChangeEvent event) {
-		// do nothing
-	}
-
-	/* (non-Javadoc)
-	 * @see IJobChangeListener#running(IJobChangeEvent)
-	 * This default implementation does nothing
-	 */
-	public void running(IJobChangeEvent event) {
-		// do nothing
-	}
-
-	/* (non-Javadoc)
-	 * @see IJobChangeListener#scheduled(IJobChangeEvent)
-	 * This default implementation does nothing
-	 */
-	public void scheduled(IJobChangeEvent event) {
-		// do nothing
-	}
-
-	/* (non-Javadoc)
-	 * @see IJobChangeListener#sleeping(IJobChangeEvent)
-	 * This default implementation does nothing
-	 */
-	public void sleeping(IJobChangeEvent event) {
-		// do nothing
-	}
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/LockListener.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/LockListener.java
deleted file mode 100644
index e25e3b0..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/LockListener.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.jobs;
-
-import org.eclipse.core.internal.jobs.JobManager;
-import org.eclipse.core.internal.jobs.LockManager;
-
-/**
- * A lock listener is notified whenever a thread is about to wait
- * on a lock, and when a thread is about to release a lock.
- * <p>
- * This class is for internal use by the platform-related plug-ins.
- * Clients outside of the base platform should not reference or subclass this class.
- * </p>
- * 
- * @see IJobManager#setLockListener(LockListener)
- * @since 3.0
- */
-public class LockListener {
-	private final LockManager manager = JobManager.getInstance().getLockManager();
-
-	/**
-	 * Notification that a thread is about to block on an attempt to acquire a lock.
-	 * Returns whether the thread should be granted immediate access to the lock.
-	 * <p>
-	 * This default implementation always returns <code>false</code>. 
-	 * Subclasses may override.
-	 * 
-	 * @param lockOwner the thread that currently owns the lock this thread is
-	 * waiting for, or <code>null</code> if unknown.
-	 * @return <code>true</code> if the thread should be granted immediate access, 
-	 * and <code>false</code> if it should wait for the lock to be available
-	 */
-	public boolean aboutToWait(Thread lockOwner) {
-		return false;
-	}
-
-	/**
-	 * Notification that a thread is about to release a lock.
-	 * <p>
-	 * This default implementation does nothing. Subclasses may override.
-	 */
-	public void aboutToRelease() {
-		//do nothing
-	}
-
-	/**
-	 * Returns whether this thread currently owns any locks
-	 * @return <code>true</code> if this thread owns any locks, and 
-	 * <code>false</code> otherwise.
-	 */
-	protected final boolean isLockOwnerThread() {
-		return manager.isLockOwner();
-	}
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/MultiRule.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/MultiRule.java
deleted file mode 100644
index 0693a04..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/MultiRule.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.jobs;
-
-import java.util.ArrayList;
-
-/**
- * A MultiRule is a compound scheduling rule that represents a fixed group of child 
- * scheduling rules.  A MultiRule conflicts with another rule if any of its children conflict 
- * with that rule.  More formally, a compound rule represents a logical intersection 
- * of its child rules with respect to the <code>isConflicting</code> equivalence 
- * relation.
- * <p>
- * A MultiRule will never contain other MultiRules as children.  If a MultiRule is provided
- * as a child, its children will be added instead.
- * </p>
- * <p>
- * This class is not intended to be subclassed by clients.
- * </p>
- * @since 3.0
- */
-public class MultiRule implements ISchedulingRule {
-	private ISchedulingRule[] rules;
-
-	/**
-	 * Returns a scheduling rule that encompasses all provided rules.  The resulting
-	 * rule may or may not be an instance of <code>MultiRule</code>.  If all
-	 * provided rules are <code>null</code> then the result will be
-	 * <code>null</code>.
-	 * 
-	 * @param ruleArray An array of scheduling rules, some of which may be <code>null</code>
-	 * @return a combined scheduling rule, or <code>null</code>
-	 * @since 3.1
-	 */
-	public static ISchedulingRule combine(ISchedulingRule[] ruleArray) {
-		ISchedulingRule result = null;
-		for (int i = 0; i < ruleArray.length; i++) {
-			if (ruleArray[i] == null)
-				continue;
-			if (result == null) {
-				result = ruleArray[i];
-				continue;
-			}
-			result = combine(result, ruleArray[i]);
-		}
-		return result;
-	}
-
-	/**
-	 * Returns a scheduling rule that encompasses both provided rules.  The resulting
-	 * rule may or may not be an instance of <code>MultiRule</code>.  If both
-	 * provided rules are <code>null</code> then the result will be
-	 * <code>null</code>.
-	 * 
-	 * @param rule1 a scheduling rule, or <code>null</code>
-	 * @param rule2 another scheduling rule, or <code>null</code>
-	 * @return a combined scheduling rule, or <code>null</code>
-	 */
-	public static ISchedulingRule combine(ISchedulingRule rule1, ISchedulingRule rule2) {
-		if (rule1 == rule2)
-			return rule1;
-		if (rule1 == null)
-			return rule2;
-		if (rule2 == null)
-			return rule1;
-		if (rule1.contains(rule2))
-			return rule1;
-		if (rule2.contains(rule1))
-			return rule2;
-		MultiRule result = new MultiRule();
-		result.rules = new ISchedulingRule[] {rule1, rule2};
-		//make sure we don't end up with nested multi-rules
-		if (rule1 instanceof MultiRule || rule2 instanceof MultiRule)
-			result.rules = flatten(result.rules);
-		return result;
-	}
-
-	/*
-	 * Collapses an array of rules that may contain MultiRules into an
-	 * array in which no rules are MultiRules.
-	 */
-	private static ISchedulingRule[] flatten(ISchedulingRule[] nestedRules) {
-		ArrayList myRules = new ArrayList(nestedRules.length);
-		for (int i = 0; i < nestedRules.length; i++) {
-			if (nestedRules[i] instanceof MultiRule) {
-				ISchedulingRule[] children = ((MultiRule) nestedRules[i]).getChildren();
-				for (int j = 0; j < children.length; j++)
-					myRules.add(children[j]);
-			} else {
-				myRules.add(nestedRules[i]);
-			}
-		}
-		return (ISchedulingRule[]) myRules.toArray(new ISchedulingRule[myRules.size()]);
-	}
-
-	/**
-	 * Creates a new scheduling rule that composes a set of nested rules.
-	 * 
-	 * @param nestedRules the nested rules for this compound rule.
-	 */
-	public MultiRule(ISchedulingRule[] nestedRules) {
-		this.rules = flatten(nestedRules);
-	}
-
-	/**
-	 * Creates a new scheduling rule with no nested rules. For
-	 * internal use only.
-	 */
-	private MultiRule() {
-		//to be invoked only by factory methods
-	}
-
-	/**
-	 * Returns the child rules within this rule.
-	 * @return the child rules
-	 */
-	public ISchedulingRule[] getChildren() {
-		return (ISchedulingRule[]) rules.clone();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.jobs.ISchedulingRule#contains(org.eclipse.core.runtime.jobs.ISchedulingRule)
-	 */
-	public boolean contains(ISchedulingRule rule) {
-		if (this == rule)
-			return true;
-		if (rule instanceof MultiRule) {
-			ISchedulingRule[] otherRules = ((MultiRule) rule).getChildren();
-			//for each child of the target, there must be some child in this rule that contains it.
-			for (int other = 0; other < otherRules.length; other++) {
-				boolean found = false;
-				for (int mine = 0; !found && mine < rules.length; mine++)
-					found = rules[mine].contains(otherRules[other]);
-				if (!found)
-					return false;
-			}
-			return true;
-		}
-		for (int i = 0; i < rules.length; i++)
-			if (rules[i].contains(rule))
-				return true;
-		return false;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.jobs.ISchedulingRule#isConflicting(org.eclipse.core.runtime.jobs.ISchedulingRule)
-	 */
-	public boolean isConflicting(ISchedulingRule rule) {
-		if (this == rule)
-			return true;
-		if (rule instanceof MultiRule) {
-			ISchedulingRule[] otherRules = ((MultiRule) rule).getChildren();
-			for (int j = 0; j < otherRules.length; j++)
-				for (int i = 0; i < rules.length; i++)
-					if (rules[i].isConflicting(otherRules[j]))
-						return true;
-		} else {
-			for (int i = 0; i < rules.length; i++)
-				if (rules[i].isConflicting(rule))
-					return true;
-		}
-		return false;
-	}
-
-	/*
-	 * For debugging purposes only.
-	 */
-	public String toString() {
-		StringBuffer buffer = new StringBuffer();
-		buffer.append("MultiRule["); //$NON-NLS-1$
-		int last = rules.length - 1;
-		for (int i = 0; i < rules.length; i++) {
-			buffer.append(rules[i]);
-			if (i != last)
-				buffer.append(',');
-		}
-		buffer.append(']');
-		return buffer.toString();
-	}
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/ProgressProvider.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/ProgressProvider.java
deleted file mode 100644
index 719954c..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/ProgressProvider.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.jobs;
-
-import org.eclipse.core.runtime.*;
-
-/**
- * The progress provider supplies the job manager with progress monitors for
- * running jobs.  There can only be one progress provider at any given time.
- * <p>
- * This class is for internal use by the platform-related plug-ins.
- * Clients outside of the base platform should not reference or subclass this class.
- * </p>
- * 
- * @see IJobManager#setProgressProvider(ProgressProvider)
- * @since 3.0
- */
-public abstract class ProgressProvider {
-	/**
-	 * Provides a new progress monitor instance to be used by the given job.
-	 * This method is called prior to running any job that does not belong to a
-	 * progress group. The returned monitor will be supplied to the job's
-	 * <code>run</code> method.
-	 * 
-	 * @see #createProgressGroup()
-	 * @see Job#setProgressGroup(IProgressMonitor, int)
-	 * @param job the job to create a progress monitor for
-	 * @return a progress monitor, or <code>null</code> if no progress monitoring 
-	 * is needed.
-	 */
-	public abstract IProgressMonitor createMonitor(Job job);
-
-	/**
-	 * Returns a progress monitor that can be used to provide
-	 * aggregated progress feedback on a set of running jobs.
-	 * This method implements <code>IJobManager.createProgressGroup</code>,
-	 * and must obey all rules specified in that contract.
-	 * <p>
-	 * This default implementation returns a new
-	 * <code>NullProgressMonitor</code>  Subclasses may override.
-	 * 
-	 * @see IJobManager#createProgressGroup()
-	 * @return a progress monitor
-	 */
-	public IProgressMonitor createProgressGroup() {
-		return new NullProgressMonitor();
-	}
-
-	/**
-	 * Returns a progress monitor that can be used by a running job
-	 * to report progress in the context of a progress group. This method
-	 * implements <code>Job.setProgressGroup</code>.  One of the
-	 * two <code>createMonitor</code> methods will be invoked
-	 * prior to each execution of a job, depending on whether a progress
-	 * group was specified for the job.
-	 * <p>
-	 * The provided monitor must be a monitor returned by the method
-	 * <code>createProgressGroup</code>.  This method is responsible
-	 * for asserting this and throwing an appropriate runtime exception
-	 * if an invalid monitor is provided.
-	 * <p>
-	 * This default implementation returns a new
-	 * <code>SubProgressMonitor</code>.  Subclasses may override.
-	 * 
-	 * @see IJobManager#createProgressGroup()
-	 * @see Job#setProgressGroup(IProgressMonitor, int)
-	 * @param job the job to create a progress monitor for
-	 * @param group the progress monitor group that this job belongs to
-	 * @param ticks the number of ticks of work for the progress monitor
-	 * @return a progress monitor, or <code>null</code> if no progress monitoring 
-	 * is needed.
-	 */
-	public IProgressMonitor createMonitor(Job job, IProgressMonitor group, int ticks) {
-		return new SubProgressMonitor(group, ticks);
-	}
-
-	/**
-	 * Returns a progress monitor to use when none has been provided
-	 * by the client running the job.  
-	 * <p>
-	 * This default implementation returns a new
-	 * <code>NullProgressMonitor</code>  Subclasses may override.
-	 * 
-	 * @return a progress monitor
-	 */
-	public IProgressMonitor getDefaultMonitor() {
-		return new NullProgressMonitor();
-	}
-}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/package.html b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/package.html
deleted file mode 100644
index 1e6256b..0000000
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/package.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Provides core support for scheduling and interacting with background activity.
-<h2>
-Package Specification</h2>
-<p>
-This package specifies API for scheduling background tasks, or jobs.  Jobs can be
-scheduled for immediate execution, or for execution after a specified delay.  Once
-scheduled, jobs can be queried, canceled, or suspended.  Rules can be attached to
-jobs to indicate when they can run, and whether they can run simultaneously with other
-jobs.  This package also includes a generic locking facility that includes support for 
-detecting and responding to deadlock.
-<p>
-@since 3.0
-<p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.core.runtime.compatibility.registry/.classpath b/bundles/org.eclipse.core.runtime.compatibility.registry/.classpath
deleted file mode 100644
index a29e908..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility.registry/.classpath
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="lib" path="classes"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/bundles/org.eclipse.core.runtime.compatibility.registry/.cvsignore b/bundles/org.eclipse.core.runtime.compatibility.registry/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility.registry/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/bundles/org.eclipse.core.runtime.compatibility.registry/.project b/bundles/org.eclipse.core.runtime.compatibility.registry/.project
deleted file mode 100644
index 525a642..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility.registry/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.core.runtime.compatibility.registry</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.core.runtime.compatibility.registry/.settings/org.eclipse.ltk.core.refactoring.prefs b/bundles/org.eclipse.core.runtime.compatibility.registry/.settings/org.eclipse.ltk.core.refactoring.prefs
deleted file mode 100644
index 56411a5..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility.registry/.settings/org.eclipse.ltk.core.refactoring.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Wed Feb 01 16:10:57 EST 2006
-eclipse.preferences.version=1
-org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/bundles/org.eclipse.core.runtime.compatibility.registry/META-INF/MANIFEST.MF b/bundles/org.eclipse.core.runtime.compatibility.registry/META-INF/MANIFEST.MF
deleted file mode 100644
index 3ebe097..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility.registry/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %fragmentName
-Bundle-SymbolicName: org.eclipse.core.runtime.compatibility.registry
-Bundle-Version: 3.2.0.qualifier
-Bundle-Vendor: %providerName
-Fragment-Host: org.eclipse.equinox.registry
-Bundle-Localization: fragment
-Eclipse-PatchFragment: true
-Bundle-ClassPath: runtime_registry_compatibility.jar
diff --git a/bundles/org.eclipse.core.runtime.compatibility.registry/about.html b/bundles/org.eclipse.core.runtime.compatibility.registry/about.html
deleted file mode 100644
index 0d66d40..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility.registry/about.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<title>About</title>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>February 6, 2006</p> 
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html" target="_blank">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
-
-<small>Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.</small>
-
-</body>
-</html>
diff --git a/bundles/org.eclipse.core.runtime.compatibility.registry/build.properties b/bundles/org.eclipse.core.runtime.compatibility.registry/build.properties
deleted file mode 100644
index 2569e36..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility.registry/build.properties
+++ /dev/null
@@ -1,8 +0,0 @@
-source.runtime_registry_compatibility.jar = src/,\
-                                            classes/
-output.runtime_registry_compatibility.jar = bin/
-bin.includes = META-INF/,\
-               runtime_registry_compatibility.jar,\
-               about.html,\
-               fragment.properties
-extra.runtime_registry_compatibility.jar = classes/
diff --git a/bundles/org.eclipse.core.runtime.compatibility.registry/classes/org/eclipse/core/runtime/IPluginDescriptor.class b/bundles/org.eclipse.core.runtime.compatibility.registry/classes/org/eclipse/core/runtime/IPluginDescriptor.class
deleted file mode 100644
index 817a1b8..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility.registry/classes/org/eclipse/core/runtime/IPluginDescriptor.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.core.runtime.compatibility.registry/fragment.properties b/bundles/org.eclipse.core.runtime.compatibility.registry/fragment.properties
deleted file mode 100644
index e60dbf5..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility.registry/fragment.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-providerName=Eclipse.org
-fragmentName=Eclipse Registry Compatibility Fragment
diff --git a/bundles/org.eclipse.core.runtime.compatibility.registry/src/org/eclipse/core/internal/registry/BundleHelper.java b/bundles/org.eclipse.core.runtime.compatibility.registry/src/org/eclipse/core/internal/registry/BundleHelper.java
deleted file mode 100644
index 9519509..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility.registry/src/org/eclipse/core/internal/registry/BundleHelper.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.registry;
-
-import org.eclipse.core.internal.registry.osgi.Activator;
-import org.osgi.framework.Bundle;
-import org.osgi.service.packageadmin.PackageAdmin;
-import org.osgi.util.tracker.ServiceTracker;
-
-public class BundleHelper {
-
-	private ServiceTracker bundleTracker = null;
-
-	private static final BundleHelper singleton = new BundleHelper();
-
-	public static BundleHelper getDefault() {
-		return singleton;
-	}
-
-	/**
-	 * Private constructor to block instance creation.
-	 */
-	private BundleHelper() {
-		super();
-	}
-
-	private PackageAdmin getPackageAdmin() {
-		if (bundleTracker == null) {
-			bundleTracker = new ServiceTracker(Activator.getContext(), PackageAdmin.class.getName(), null);
-			bundleTracker.open();
-		}
-		return (PackageAdmin) bundleTracker.getService();
-	}
-
-	public Bundle getBundle(String symbolicName) {
-		PackageAdmin packageAdmin = getPackageAdmin();
-		if (packageAdmin == null)
-			return null;
-		Bundle[] bundles = packageAdmin.getBundles(symbolicName, null);
-		if (bundles == null)
-			return null;
-		//Return the first bundle that is not installed or uninstalled
-		for (int i = 0; i < bundles.length; i++) {
-			if ((bundles[i].getState() & (Bundle.INSTALLED | Bundle.UNINSTALLED)) == 0) {
-				return bundles[i];
-			}
-		}
-		return null;
-	}
-
-	public Bundle[] getHosts(Bundle bundle) {
-		PackageAdmin packageAdmin = getPackageAdmin();
-		if (packageAdmin == null)
-			return null;
-		return packageAdmin.getHosts(bundle);
-	}
-
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility.registry/src/org/eclipse/core/internal/registry/ExtensionHandle.java b/bundles/org.eclipse.core.runtime.compatibility.registry/src/org/eclipse/core/internal/registry/ExtensionHandle.java
deleted file mode 100644
index 2e3421f..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility.registry/src/org/eclipse/core/internal/registry/ExtensionHandle.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.registry;
-
-import org.eclipse.core.runtime.IPluginDescriptor;
-import org.eclipse.core.runtime.InvalidRegistryObjectException;
-import org.osgi.framework.Bundle;
-
-/**
- * This class contains only compatibility-specific code.
- * 
- * @deprecated marked as deprecated to supress warnings
- */
-public class ExtensionHandle extends BaseExtensionHandle {
-
-	static final ExtensionHandle[] EMPTY_ARRAY = new ExtensionHandle[0];
-
-	public ExtensionHandle(IObjectManager objectManager, int id) {
-		super(objectManager, id);
-	}
-
-	public IPluginDescriptor getDeclaringPluginDescriptor() throws InvalidRegistryObjectException {
-		String namespace = getContributor().getName();
-		IPluginDescriptor result = RegistryCompatibilityHelper.getPluginDescriptor(namespace);
-		if (result == null) {
-			Bundle underlyingBundle = BundleHelper.getDefault().getBundle(namespace);
-			if (underlyingBundle != null) {
-				Bundle[] hosts = BundleHelper.getDefault().getHosts(underlyingBundle);
-				if (hosts != null)
-					result = RegistryCompatibilityHelper.getPluginDescriptor(hosts[0].getSymbolicName());
-			}
-		}
-
-		return result;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility.registry/src/org/eclipse/core/internal/registry/ExtensionPointHandle.java b/bundles/org.eclipse.core.runtime.compatibility.registry/src/org/eclipse/core/internal/registry/ExtensionPointHandle.java
deleted file mode 100644
index 2487cd2..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility.registry/src/org/eclipse/core/internal/registry/ExtensionPointHandle.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.registry;
-
-import org.eclipse.core.runtime.IPluginDescriptor;
-
-/**
- * This class contains only compatibility-specific code.
- * 
- * @deprecated marked as deprecated to supress warnings
- */
-public class ExtensionPointHandle extends BaseExtensionPointHandle {
-
-	static final ExtensionPointHandle[] EMPTY_ARRAY = new ExtensionPointHandle[0];
-
-	public ExtensionPointHandle(IObjectManager objectManager, int id) {
-		super(objectManager, id);
-	}
-
-	public IPluginDescriptor getDeclaringPluginDescriptor() {
-		return RegistryCompatibilityHelper.getPluginDescriptor(getContributor().getName());
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility.registry/src/org/eclipse/core/internal/registry/RegistryCompatibilityHelper.java b/bundles/org.eclipse.core.runtime.compatibility.registry/src/org/eclipse/core/internal/registry/RegistryCompatibilityHelper.java
deleted file mode 100644
index 4659556..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility.registry/src/org/eclipse/core/internal/registry/RegistryCompatibilityHelper.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.registry;
-
-import java.lang.reflect.Method;
-import org.eclipse.core.runtime.IPluginDescriptor;
-import org.osgi.framework.Bundle;
-
-/**
- * This class isolates calls to the backward compatibility layer.
- * It uses reflection so it can be loaded with success even in the absence of
- * the compatibility plugin.
- * 
- * @deprecated Marked as deprecated to suppress deprecation warnings.
- */
-public class RegistryCompatibilityHelper {
-	public static final String PI_RUNTIME_COMPATIBILITY = "org.eclipse.core.runtime.compatibility"; //$NON-NLS-1$
-	private static Bundle compatibility = null;
-
-	public synchronized static Bundle initializeCompatibility() {
-		// if compatibility is stale (has been uninstalled or unresolved) 
-		// then we try to get a new resolved compatibility bundle
-		if (compatibility == null || (compatibility.getState() & (Bundle.INSTALLED | Bundle.UNINSTALLED | Bundle.STOPPING)) != 0) {
-			compatibility = BundleHelper.getDefault().getBundle(PI_RUNTIME_COMPATIBILITY);
-		}
-		return compatibility;
-	}
-
-	public synchronized static IPluginDescriptor getPluginDescriptor(String pluginId) {
-		//Here we use reflection so the runtime code can run without the compatibility
-		initializeCompatibility();
-		if (compatibility == null)
-			throw new IllegalStateException();
-
-		Class oldInternalPlatform = null;
-		try {
-			oldInternalPlatform = compatibility.loadClass("org.eclipse.core.internal.plugins.InternalPlatform"); //$NON-NLS-1$
-			Method getPluginDescriptor = oldInternalPlatform.getMethod("getPluginDescriptor", new Class[] {String.class}); //$NON-NLS-1$
-			return (IPluginDescriptor) getPluginDescriptor.invoke(oldInternalPlatform, new Object[] {pluginId});
-		} catch (Exception e) {
-			//Ignore the exceptions, return null			
-		}
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility.registry/src/org/eclipse/core/runtime/IExtension.java b/bundles/org.eclipse.core.runtime.compatibility.registry/src/org/eclipse/core/runtime/IExtension.java
deleted file mode 100644
index 4f66c75..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility.registry/src/org/eclipse/core/runtime/IExtension.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-/**
- * An extension declared in a plug-in.
- * All information is obtained from the declaring plug-in's 
- * manifest (<code>plugin.xml</code>) file.
- * <p>
- * These registry objects are intended for relatively short-term use. Clients that 
- * deal with these objects must be aware that they may become invalid if the 
- * declaring plug-in is updated or uninstalled. If this happens, all methods except
- * {@link #isValid()} will throw {@link InvalidRegistryObjectException}.
- * For extension objects, the most common case is code in a plug-in dealing
- * with extensions contributed to one of the extension points it declares.
- * Code in a plug-in that has declared that it is not dynamic aware (or not
- * declared anything) can safely ignore this issue, since the registry
- * would not be modified while it is active. However, code in a plug-in that
- * declares that it is dynamic aware must be careful when accessing the extension
- * objects because they become invalid if the contributing plug-in is removed.
- * Similarly, tools that analyze or display the extension registry are vulnerable.
- * Client code can pre-test for invalid objects by calling {@link #isValid()},
- * which never throws this exception. However, pre-tests are usually not sufficient
- * because of the possibility of the extension object becoming invalid as a
- * result of a concurrent activity. At-risk clients must treat 
- * <code>InvalidRegistryObjectException</code> as if it were a checked exception.
- * Also, such clients should probably register a listener with the extension registry
- * so that they receive notification of any changes to the registry.
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- */
-public interface IExtension {
-	/**
-	 * Returns all configuration elements declared by this extension.
-	 * These elements are a direct reflection of the configuration 
-	 * markup supplied in the manifest (<code>plugin.xml</code>)
-	 * file for the plug-in that declares this extension.
-	 * Returns an empty array if this extension does not declare any
-	 * configuration elements.
-	 *
-	 * @return the configuration elements declared by this extension
-	 * @throws InvalidRegistryObjectException if this extension is no longer valid
-	 */
-	public IConfigurationElement[] getConfigurationElements() throws InvalidRegistryObjectException;
-
-	/**
-	 * Returns the namespace for this extension. This value can be used
-	 * in various global facilities to discover this extension's provider.
-	 * 
-	 * @return the namespace for this extension
-	 * @throws InvalidRegistryObjectException if this extension is no longer valid
-	 * @see IExtensionRegistry
-	 * @since 3.0
-	 * 
-	 * @deprecated As namespace is no longer restricted to the contributor name, 
-	 * use {@link #getNamespaceIdentifier()} to obtain namespace name or {@link #getContributor()}
-	 * to get the name of the contributor of this registry element  
-	 */
-	public String getNamespace() throws InvalidRegistryObjectException;
-
-	/**
-	 * Returns the namespace name for this extension.
-	 * @return the namespace name for this extension
-	 * @throws InvalidRegistryObjectException if this extension is no longer valid
-	 * @since org.eclipse.equinox.registry 3.2	 
-	 */
-	public String getNamespaceIdentifier() throws InvalidRegistryObjectException;
-
-	/**
-	 * Returns the contributor of the extension.
-	 * @return the contributor for this extension
-	 * @throws InvalidRegistryObjectException if this extension is no longer valid
-	 * @since org.eclipse.equinox.registry 3.2	 
-	 */
-	public IContributor getContributor() throws InvalidRegistryObjectException;
-
-	/**
-	 * Returns the unique identifier of the extension point
-	 * to which this extension should be contributed.
-	 *
-	 * @return the unique identifier of the relevant extension point
-	 * @throws InvalidRegistryObjectException if this extension is no longer valid
-	 */
-	public String getExtensionPointUniqueIdentifier() throws InvalidRegistryObjectException;
-
-	/**
-	 * Returns a displayable label for this extension.
-	 * Returns the empty string if no label for this extension
-	 * is specified in the plug-in manifest file.
-	 * <p> Note that any translation specified in the plug-in manifest
-	 * file is automatically applied.
-	 * <p>
-	 *
-	 * @return a displayable string label for this extension,
-	 *    possibly the empty string
-	 * @throws InvalidRegistryObjectException if this extension is no longer valid
-	 */
-	public String getLabel() throws InvalidRegistryObjectException;
-
-	/**
-	 * Returns the simple identifier of this extension, or <code>null</code>
-	 * if this extension does not have an identifier.
-	 * This identifier is specified in the plug-in manifest (<code>plugin.xml</code>) 
-	 * file as a non-empty string containing no period characters 
-	 * (<code>'.'</code>) and must be unique within the defining plug-in.
-	 *
-	 * @return the simple identifier of the extension (e.g. <code>"main"</code>)
-	 *  or <code>null</code>
-	 * @throws InvalidRegistryObjectException if this extension is no longer valid
-	 */
-	public String getSimpleIdentifier() throws InvalidRegistryObjectException;
-
-	/**
-	 * Returns the unique identifier of this extension, or <code>null</code>
-	 * if this extension does not have an identifier.
-	 * If available, this identifier is unique within the plug-in registry, and
-	 * is composed of the namespace where this extension 
-	 * was declared and this extension's simple identifier.
-	 *
-	 * @return the unique identifier of the extension
-	 *    (e.g. <code>"com.example.acme.main"</code>), or <code>null</code>
-	 * @throws InvalidRegistryObjectException if this extension is no longer valid
-	 */
-	public String getUniqueIdentifier() throws InvalidRegistryObjectException;
-
-	/* (non-javadoc) 
-	 * @see Object#equals(java.lang.Object)
-	 */
-	public boolean equals(Object o);
-
-	/**
-	 * Returns whether this extension object is valid.
-	 * 
-	 * @return <code>true</code> if the object is valid, and <code>false</code>
-	 * if it is no longer valid
-	 * @since 3.1
-	 */
-	public boolean isValid();
-
-	/**
-	 * Returns the descriptor of the plug-in that declares this extension.
-	 * 
-	 * @return the plug-in that declares this extension
-	 * @throws InvalidRegistryObjectException if this extension is no longer valid
-	 * @deprecated IPluginDescriptor is not part of the new runtime and its function
-	 * has been split over several parts of the new runtime.  This method
-	 * is not available (returns <tt>null</tt>) if the compatibility layer is not installed.  Use getNamespace()
-	 * to get the symbolic id of the declaring plugin.  See {@link IPluginDescriptor} to see how to 
-	 * update your use-cases.
-	 */
-	public IPluginDescriptor getDeclaringPluginDescriptor() throws InvalidRegistryObjectException;
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility.registry/src/org/eclipse/core/runtime/IExtensionPoint.java b/bundles/org.eclipse.core.runtime.compatibility.registry/src/org/eclipse/core/runtime/IExtensionPoint.java
deleted file mode 100644
index e773ec0..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility.registry/src/org/eclipse/core/runtime/IExtensionPoint.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-/**
- * An extension point declared in a plug-in.
- * Except for the list of extensions plugged in to it, the information 
- * available for an extension point is obtained from the declaring plug-in's 
- * manifest (<code>plugin.xml</code>) file.
- * <p>
- * These registry objects are intended for relatively short-term use. Clients that 
- * deal with these objects must be aware that they may become invalid if the 
- * declaring plug-in is updated or uninstalled. If this happens, all methods except
- * {@link #isValid()} will throw {@link InvalidRegistryObjectException}.
- * For extension point objects, the most common case is code in a plug-in dealing
- * with one of the extension points it declares. These extension point objects are
- * guaranteed to be valid while the plug-in is active. Code in a plug-in that has
- * declared that it is not dynamic aware (or not declared anything) can also safely
- * ignore this issue, since the registry would not be modified while it is
- * active. However, code in a plug-in that declares that it is dynamic aware
- * must be careful if it access the extension point object of a different plug-in,
- * because it's at risk if that other plug-in is removed. Similarly,
- * tools that analyze or display the extension registry are vulnerable.
- * Client code can pre-test for invalid objects by calling {@link #isValid()},
- * which never throws this exception. However, pre-tests are usually not sufficient
- * because of the possibility of the extension point object becoming invalid as a
- * result of a concurrent activity. At-risk clients must treat 
- * <code>InvalidRegistryObjectException</code> as if it were a checked exception.
- * Also, such clients should probably register a listener with the extension registry
- * so that they receive notification of any changes to the registry.
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- */
-public interface IExtensionPoint {
-	/**
-	 * Returns all configuration elements from all extensions configured
-	 * into this extension point. Returns an empty array if this extension 
-	 * point has no extensions configured, or none of the extensions 
-	 * contain configuration elements.
-	 *
-	 * @return the configuration elements for all extension configured 
-	 *   into this extension point
-	 * @throws InvalidRegistryObjectException if this extension point is no longer valid
-	 */
-	public IConfigurationElement[] getConfigurationElements() throws InvalidRegistryObjectException;
-
-	/**
-	 * Returns the namespace for this extension point. This value can be used
-	 * in various global facilities to discover this extension point's provider.
-	 * 
-	 * @return the namespace for this extension point
-	 * @throws InvalidRegistryObjectException if this extension point is no longer valid
-	 * @see IExtensionRegistry
-	 * @since 3.0
-	 * 
-	 * @deprecated As namespace is no longer restricted to the contributor name, 
-	 * use {@link #getNamespaceIdentifier()} to obtain namespace name or {@link #getContributor()}
-	 * to get the name of the contributor of this registry element  
-	 */
-	public String getNamespace() throws InvalidRegistryObjectException;
-
-	/**
-	 * Returns the namespace name for this extension point.
-	 * @return the namespace name for this extension point
-	 * @throws InvalidRegistryObjectException if this extension point is no longer valid
-	 * @since org.eclipse.equinox.registry 3.2	 
-	 */
-	public String getNamespaceIdentifier() throws InvalidRegistryObjectException;
-
-	/**
-	 * Returns the contributor of the extension point.
-	 * @return the contributor for this extension point
-	 * @throws InvalidRegistryObjectException if this extension point is no longer valid
-	 * @since org.eclipse.equinox.registry 3.2	 
-	 */
-	public IContributor getContributor() throws InvalidRegistryObjectException;
-
-	/**
-	 * Returns the extension with the given unique identifier configured into
-	 * this extension point, or <code>null</code> if there is no such extension.
-	 * Since an extension might not have an identifier, some extensions
-	 * can only be found via the <code>getExtensions</code> method.
-	 *
-	 * @param extensionId the unique identifier of an extension 
-	 *		(e.g. <code>"com.example.acme.main"</code>).
-	 * @return an extension, or <code>null</code>
-	 * @throws InvalidRegistryObjectException if this extension point is no longer valid
-	 */
-	public IExtension getExtension(String extensionId) throws InvalidRegistryObjectException;
-
-	/**
-	 * Returns all extensions configured into this extension point.
-	 * Returns an empty array if this extension point has no extensions.
-	 *
-	 * @return the extensions configured into this extension point
-	 * @throws InvalidRegistryObjectException if this extension point is no longer valid
-	 */
-	public IExtension[] getExtensions() throws InvalidRegistryObjectException;
-
-	/**
-	 * Returns a displayable label for this extension point.
-	 * Returns the empty string if no label for this extension point
-	 * is specified in the plug-in manifest file.
-	 * <p> Note that any translation specified in the plug-in manifest
-	 * file is automatically applied.
-	 * </p>
-	 *
-	 * @return a displayable string label for this extension point,
-	 *    possibly the empty string
-	 * @throws InvalidRegistryObjectException if this extension point is no longer valid
-	 */
-	public String getLabel() throws InvalidRegistryObjectException;
-
-	/**
-	 * Returns reference to the extension point schema. The schema 
-	 * reference is returned as a URL path relative to the plug-in 
-	 * installation URL. 
-	 * Returns the empty string if no schema for this extension point
-	 * is specified in the plug-in manifest file.
-	 *
-	 * @return a relative URL path, or an empty string
-	 * @throws InvalidRegistryObjectException if this extension point is no longer valid
-	 */
-	public String getSchemaReference() throws InvalidRegistryObjectException;
-
-	/**
-	 * Returns the simple identifier of this extension point.
-	 * This identifier is a non-empty string containing no
-	 * period characters (<code>'.'</code>) and is guaranteed
-	 * to be unique within the defining plug-in.
-	 *
-	 * @return the simple identifier of the extension point (e.g. <code>"builders"</code>)
-	 * @throws InvalidRegistryObjectException if this extension point is no longer valid
-	 */
-	public String getSimpleIdentifier() throws InvalidRegistryObjectException;
-
-	/**
-	 * Returns the unique identifier of this extension point.
-	 * This identifier is unique within the plug-in registry, and
-	 * is composed of the namespace for this extension point 
-	 * and this extension point's simple identifier.
-	 * 
-	 *
-	 * @return the unique identifier of the extension point
-	 *    (e.g. <code>"org.eclipse.core.resources.builders"</code>)
-	 * @throws InvalidRegistryObjectException if this extension point is no longer valid
-	 */
-	public String getUniqueIdentifier() throws InvalidRegistryObjectException;
-
-	/* (non-javadoc) 
-	 * @see Object#equals(java.lang.Object)
-	 */
-	public boolean equals(Object o);
-
-	/**
-	 * Returns whether this extension point object is valid.
-	 * 
-	 * @return <code>true</code> if the object is valid, and <code>false</code>
-	 * if it is no longer valid
-	 * @since 3.1
-	 */
-	public boolean isValid();
-
-	/** 
-	 * Returns the descriptor of the plug-in that declares this extension point.
-	 *
-	 * @return the plug-in that declares this extension point
-	 * @throws InvalidRegistryObjectException if this extension point is no longer valid
-	 * @deprecated IPluginDescriptor is not part of the new runtime and its function
-	 * has been split over several parts of the new runtime.  This method
-	 * is not available (returns null) if the compatibility layer is not installed.  Use getNamespace()
-	 * to get the symbolic id of the declaring plugin.  See {@link IPluginDescriptor} to see how to 
-	 * update your use-cases.
-	 */
-	public IPluginDescriptor getDeclaringPluginDescriptor() throws InvalidRegistryObjectException;
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/.classpath b/bundles/org.eclipse.core.runtime.compatibility/.classpath
deleted file mode 100644
index d943280..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/.classpath
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src-boot"/>
-	<classpathentry kind="src" path="src-runtime"/>
-	<classpathentry kind="src" path="src-model"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/bundles/org.eclipse.core.runtime.compatibility/.cvsignore b/bundles/org.eclipse.core.runtime.compatibility/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/bundles/org.eclipse.core.runtime.compatibility/.project b/bundles/org.eclipse.core.runtime.compatibility/.project
deleted file mode 100644
index da2c9ec..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/.project
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.core.runtime.compatibility</name>
-	<comment></comment>
-	<projects>
-		<project>org.eclipse.core.runtime</project>
-		<project>org.eclipse.osgi</project>
-		<project>org.eclipse.osgi.services</project>
-		<project>org.eclipse.osgi.util</project>
-		<project>org.eclipse.update.configurator</project>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.core.runtime.compatibility/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.core.runtime.compatibility/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 88ba90c..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue May 25 14:58:59 EDT 2004
-encoding/<project>=ISO-8859-1
-eclipse.preferences.version=1
diff --git a/bundles/org.eclipse.core.runtime.compatibility/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.core.runtime.compatibility/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index e1295a2..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,77 +0,0 @@
-#Fri May 20 10:27:39 EDT 2005
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=error
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.core.runtime.compatibility/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.core.runtime.compatibility/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 4028afc..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Fri Jan 06 16:48:21 EST 2006
-eclipse.preferences.version=1
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return Returns the ${bare_field_name}.\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} The ${bare_field_name} to set.\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\r\n * Copyright (c) ${year} IBM Corporation and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n *\r\n * Contributors\:\r\n *     IBM Corporation - initial API and implementation\r\n ******************************************************************************/\r\n</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @since 3.2\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="New classes and interfaces" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\r\n * Copyright (c) 2006 IBM Corporation and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n * \r\n * Contributors\:\r\n *     IBM Corporation - initial API and implementation\r\n *******************************************************************************/\r\n${package_declaration}\r\n\r\n/**\r\n * \r\n */\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block&\#13;\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
diff --git a/bundles/org.eclipse.core.runtime.compatibility/META-INF/MANIFEST.MF b/bundles/org.eclipse.core.runtime.compatibility/META-INF/MANIFEST.MF
deleted file mode 100644
index 9af8257..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,18 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-Version: 3.1.0.qualifier
-Bundle-SymbolicName: org.eclipse.core.runtime.compatibility; singleton:=true
-Bundle-Vendor: %providerName
-Bundle-Activator: org.eclipse.core.internal.plugins.CompatibilityActivator
-Bundle-Localization: plugin
-Export-Package: org.eclipse.core.boot,
- org.eclipse.core.internal.boot;x-internal:=true,
- org.eclipse.core.internal.compatibility;x-internal:=true,
- org.eclipse.core.internal.model;x-internal:=true,
- org.eclipse.core.internal.plugins;x-internal:=true,
- org.eclipse.core.runtime.model
-Require-Bundle: 
- org.eclipse.core.runtime; visibility:=reexport,
- org.eclipse.update.configurator; visibility:=reexport
-Eclipse-AutoStart: true
diff --git a/bundles/org.eclipse.core.runtime.compatibility/about.html b/bundles/org.eclipse.core.runtime.compatibility/about.html
deleted file mode 100644
index 6f6b96c..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/about.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<title>About</title>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.runtime.compatibility/build.properties b/bundles/org.eclipse.core.runtime.compatibility/build.properties
deleted file mode 100644
index ccca7de..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/build.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-###############################################################################
-# Copyright (c) 2003 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = .,\
-	META-INF/,\
-	plugin.properties,\
-	about.html
-source.. = src-runtime/, src-boot/, src-model/
-src.includes=about.html
-extra.compatibility.jar = ../org.eclipse.update.configurator/configurator.jar
-extra.prerequisites = org.eclipse.update.configurator
diff --git a/bundles/org.eclipse.core.runtime.compatibility/plugin.properties b/bundles/org.eclipse.core.runtime.compatibility/plugin.properties
deleted file mode 100644
index 47e481b..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2003 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-pluginName = Core Runtime Plug-in Compatibility
-providerName = Eclipse.org
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/boot/BootLoader.java b/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/boot/BootLoader.java
deleted file mode 100644
index 74eb8f4..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/boot/BootLoader.java
+++ /dev/null
@@ -1,651 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.boot;
-
-import java.io.IOException;
-import java.net.URL;
-import org.eclipse.core.internal.boot.PlatformConfiguration;
-import org.eclipse.core.internal.runtime.InternalPlatform;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.update.configurator.IPlatformConfiguration;
-import org.eclipse.update.configurator.IPlatformConfigurationFactory;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-
-/**
- * Special boot loader class for the Eclipse Platform. This class cannot
- * be instantiated; all functionality is provided by static methods.
- * <p>
- * The Eclipse Platform makes heavy use of Java class loaders for
- * loading plug-ins. Even the Platform Core Runtime itself, including
- * the <code>Platform</code> class, needs to be loaded by a special 
- * class loader. The upshot is that a client program (such as a Java main
- * program, a servlet) cannot directly reference even the 
- * <code>Platform</code> class. Instead, a client must use this
- * loader class for initializing the platform, invoking functionality
- * defined in plug-ins, and shutting down the platform when done.
- * </p>
- * 
- * @see Platform
- * @deprecated 
- * In Eclipse 3.0 the runtime has been refactored such that the <code>BootLoader</code>
- * class is no longer relevant.  Most of the function found on <code>BootLoader</code> is
- * however still supported and has been relocated described in the method comments.
- * <p>
- * This interface must only be used by plug-ins 
- * which explicitly require the org.eclipse.core.runtime.compatibility plug-in.
- * </p>
- */
-public final class BootLoader {
-
-	/**
-	 * Controls the debug of platform configuration.
-	 */
-	public static boolean CONFIGURATION_DEBUG = false;
-
-	/**
-	 * The unique identifier constant (value "<code>org.eclipse.core.boot</code>")
-	 * of the Core Boot (pseudo-) plug-in.
-	 */
-	public static final String PI_BOOT = "org.eclipse.core.boot"; //$NON-NLS-1$
-
-	/**
-	 * Constant string (value "win32") indicating the platform is running on a
-	 * Window 32-bit operating system (e.g., Windows 98, NT, 2000).
-	 * @deprecated Replaced by {@link Platform#OS_WIN32}.
-	 */
-	public static final String OS_WIN32 = "win32";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "linux") indicating the platform is running on a
-	 * Linux-based operating system.
-	 * @deprecated Replaced by {@link Platform#OS_LINUX}.
-	 */
-	public static final String OS_LINUX = "linux";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "aix") indicating the platform is running on an
-	 * AIX-based operating system.
-	 * @deprecated Replaced by {@link Platform#OS_AIX}.
-	 */
-	public static final String OS_AIX = "aix";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "solaris") indicating the platform is running on a
-	 * Solaris-based operating system.
-	 * @deprecated Replaced by {@link Platform#OS_SOLARIS}.
-	 */
-	public static final String OS_SOLARIS = "solaris";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "hpux") indicating the platform is running on an
-	 * HP/UX-based operating system.
-	 * @deprecated Replaced by {@link Platform#OS_HPUX}.
-	 */
-	public static final String OS_HPUX = "hpux";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "qnx") indicating the platform is running on a
-	 * QNX-based operating system.
-	 * @deprecated Replaced by {@link Platform#OS_QNX}.
-	 */
-	public static final String OS_QNX = "qnx";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "macosx") indicating the platform is running on a
-	 * Mac OS X operating system.
-	 * @since 2.0
-	 * @deprecated Replaced by {@link Platform#OS_MACOSX}.
-	 */
-	public static final String OS_MACOSX = "macosx";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "unknown") indicating the platform is running on a
-	 * machine running an unknown operating system.
-	 * @deprecated Replaced by {@link Platform#OS_UNKNOWN}.
-	 */
-	public static final String OS_UNKNOWN = "unknown";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "x86") indicating the platform is running on an
-	 * x86-based architecture.
-	 * @deprecated Replaced by {@link Platform#ARCH_X86}.
-	 */
-	public static final String ARCH_X86 = "x86";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "PA_RISC") indicating the platform is running on an
-	 * PA_RISC-based architecture.
-	 * @deprecated Replaced by {@link Platform#ARCH_PA_RISC}.
-	 */
-	public static final String ARCH_PA_RISC = "PA_RISC";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "ppc") indicating the platform is running on an
-	 * PowerPC-based architecture.
-	 * @since 2.0
-	 * @deprecated Replaced by {@link Platform#ARCH_PPC}.
-	 */
-	public static final String ARCH_PPC = "ppc";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "sparc") indicating the platform is running on an
-	 * Sparc-based architecture.
-	 * @since 2.0
-	 * @deprecated Replaced by {@link Platform#ARCH_SPARC}.
-	 */
-	public static final String ARCH_SPARC = "sparc";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "win32") indicating the platform is running on a
-	 * machine using the Windows windowing system.
-	 * @deprecated Replaced by {@link Platform#WS_WIN32}.
-	 */
-	public static final String WS_WIN32 = "win32";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "motif") indicating the platform is running on a
-	 * machine using the Motif windowing system.
-	 * @deprecated Replaced by {@link Platform#WS_MOTIF}.
-	 */
-	public static final String WS_MOTIF = "motif";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "gtk") indicating the platform is running on a
-	 * machine using the GTK windowing system.
-	 * @deprecated Replaced by {@link Platform#WS_GTK}.
-	 */
-	public static final String WS_GTK = "gtk";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "photon") indicating the platform is running on a
-	 * machine using the Photon windowing system.
-	 * @deprecated Replaced by {@link Platform#WS_PHOTON}.
-	 */
-	public static final String WS_PHOTON = "photon";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "carbon") indicating the platform is running on a
-	 * machine using the Carbon windowing system (Mac OS X).
-	 * @since 2.0
-	 * @deprecated Replaced by {@link Platform#WS_CARBON}.
-	 */
-	public static final String WS_CARBON = "carbon";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "unknown") indicating the platform is running on a
-	 * machine running an unknown windowing system.
-	 * @deprecated Replaced by {@link Platform#WS_UNKNOWN}.
-	 */
-	public static final String WS_UNKNOWN = "unknown";//$NON-NLS-1$
-
-	/**
-	 * Private constructor to block instance creation.
-	 */
-	private BootLoader() {
-		// not allowed
-	}
-
-	/**
-	 * Returns the command line args provided to the platform when it was first run.
-	 * Note that individual platform runnables may be provided with different arguments
-	 * if they are being run individually rather than with <code>Platform.run()</code>.
-	 * 
-	 * @return the command line used to start the platform
-	 * @deprecated Replaced by {@link Platform#getCommandLineArgs()}.
-	 */
-	public static String[] getCommandLineArgs() {
-		return InternalPlatform.getDefault().getApplicationArgs();
-	}
-
-	/**
-	 * Returns the current platform configuration.
-	 * 
-	 * @return platform configuration used in current instance of platform
-	 * @since 2.0
-	 * @deprecated This functionality has moved to the Eclipse Update manager plug-in.
-	 */
-	public static org.eclipse.core.boot.IPlatformConfiguration getCurrentPlatformConfiguration() {
-		BundleContext context = InternalPlatform.getDefault().getBundleContext();
-		// acquire factory service first
-		ServiceReference configFactorySR = context.getServiceReference(IPlatformConfigurationFactory.class.getName());
-		if (configFactorySR == null)
-			throw new IllegalStateException();
-		IPlatformConfigurationFactory configFactory = (IPlatformConfigurationFactory) context.getService(configFactorySR);
-		if (configFactory == null)
-			throw new IllegalStateException();
-		// get the configuration using the factory
-		IPlatformConfiguration currentConfig = configFactory.getCurrentPlatformConfiguration();
-		context.ungetService(configFactorySR);
-		return new PlatformConfiguration(currentConfig);
-	}
-
-	/**
-	 * Returns URL at which the Platform runtime executables and libraries are installed.
-	 * The returned value is distinct from the location of any given platform's data.
-	 *
-	 * @return the URL indicating where the platform runtime is installed.
-	 * @deprecated Use <code>Platform.getInstallLocation().getURL()</code>
-	 */
-	public static URL getInstallURL() {
-		return InternalPlatform.getDefault().getInstallURL();
-	}
-
-	/**
-	 * Returns the string name of the current locale for use in finding files
-	 * whose path starts with <code>$nl$</code>.
-	 *
-	 * @return the string name of the current locale
-	 * @deprecated Replaced by {@link Platform#getNL()}.
-	 */
-	public static String getNL() {
-		return InternalPlatform.getDefault().getNL();
-	}
-
-	/**
-	 * Returns the string name of the current operating system for use in finding
-	 * files whose path starts with <code>$os$</code>.  <code>OS_UNKNOWN</code> is
-	 * returned if the operating system cannot be determined.  
-	 * The value may indicate one of the operating systems known to the platform
-	 * (as specified in <code>knownOSValues</code>) or a user-defined string if
-	 * the operating system name is specified on the command line.
-	 *
-	 * @return the string name of the current operating system
-	 * @see #knownOSValues
-	 * @deprecated Replaced by {@link Platform#getOS()}.
-	 */
-	public static String getOS() {
-		return InternalPlatform.getDefault().getOS();
-	}
-
-	/**
-	 * Returns the string name of the current system architecture.  
-	 * The value is a user-defined string if the architecture is 
-	 * specified on the command line, otherwise it is the value 
-	 * returned by <code>java.lang.System.getProperty("os.arch")</code>.
-	 * 
-	 * @return the string name of the current system architecture
-	 * @since 2.0
-	 * @deprecated Replaced by {@link Platform#getOSArch()}.
-	 */
-	public static String getOSArch() {
-		return InternalPlatform.getDefault().getOSArch();
-	}
-
-	/**
-	 * Returns a platform configuration object, optionally initialized with previously saved
-	 * configuration information.
-	 * 
-	 * @param url location of previously save configuration information. If <code>null</code>
-	 * is specified, an empty configuration object is returned
-	 * @return platform configuration used in current instance of platform
-	 * @exception IOException if the configuration cannot be read
-	 * @since 2.0
-	 * @deprecated This functionality has moved to the Eclipse Update manager plug-in.
-	 */
-	public static org.eclipse.core.boot.IPlatformConfiguration getPlatformConfiguration(URL url) throws IOException {
-		BundleContext context = InternalPlatform.getDefault().getBundleContext();
-		// acquire factory service first
-		ServiceReference configFactorySR = context.getServiceReference(IPlatformConfigurationFactory.class.getName());
-		if (configFactorySR == null)
-			throw new IllegalStateException();
-		IPlatformConfigurationFactory configFactory = (IPlatformConfigurationFactory) context.getService(configFactorySR);
-		if (configFactory == null)
-			throw new IllegalStateException();
-		// get the configuration using the factory
-		IPlatformConfiguration config = configFactory.getPlatformConfiguration(url);
-		context.ungetService(configFactorySR);
-		return new PlatformConfiguration(config);
-	}
-
-	/**
-	 * Returns the string name of the current window system for use in finding files
-	 * whose path starts with <code>$ws$</code>.  <code>null</code> is returned
-	 * if the window system cannot be determined.
-	 *
-	 * @return the string name of the current window system or <code>null</code>
-	 * @deprecated Replaced by {@link Platform#getWS()}.
-	 */
-	public static String getWS() {
-		return InternalPlatform.getDefault().getWS();
-	}
-
-	/**
-	 * Returns a list of known system architectures.
-	 * <p>
-	 * Note that this list is not authoritative; there may be legal values
-	 * not included in this list. Indeed, the value returned by 
-	 * <code>getOSArch</code> may not be in this list. Also, this list may 
-	 * change over time as Eclipse comes to run on more operating environments.
-	 * </p>
-	 * 
-	 * @return the list of system architectures known to the system
-	 * @see #getOSArch()
-	 * @since 2.0
-	 * @deprecated Replaced by {@link Platform#knownOSArchValues()}.
-	 */
-	public static String[] knownOSArchValues() {
-		return Platform.knownOSArchValues();
-	}
-
-	/**
-	 * Returns a list of known operating system names.
-	 * <p>
-	 * Note that this list is not authoritative; there may be legal values
-	 * not included in this list. Indeed, the value returned by 
-	 * <code>getOS</code> may not be in this list. Also, this list may 
-	 * change over time as Eclipse comes to run on more operating environments.
-	 * </p>
-	 * 
-	 * @return the list of operating systems known to the system
-	 * @see #getOS()
-	 * @since 2.0
-	 * @deprecated Replaced by {@link Platform#knownOSValues()}.
-	 */
-	public static String[] knownOSValues() {
-		return Platform.knownOSValues();
-	}
-
-	/**
-	 * Returns a list of known windowing system names.
-	 * <p>
-	 * Note that this list is not authoritative; there may be legal values
-	 * not included in this list. Indeed, the value returned by 
-	 * <code>getWS</code> may not be in this list. Also, this list may 
-	 * change over time as Eclipse comes to run on more operating environments.
-	 * </p>
-	 * 
-	 * @return the list of window systems known to the system
-	 * @see #getWS()
-	 * @since 2.0
-	 * @deprecated Replaced by {@link Platform#knownWSValues()}.
-	 */
-	public static String[] knownWSValues() {
-		return Platform.knownWSValues();
-	}
-
-	/**
-	 * Returns <code>true</code> if the platform is currently running in 
-	 * debug mode.  The platform is run
-	 * in debug mode using the "-debug" command line argument.
-	 *
-	 * @return whether or not the platform is running in debug mode
-	 * @deprecated Replaced by {@link Platform#inDebugMode()}.
-	 */
-	public static boolean inDebugMode() {
-		return Platform.inDebugMode();
-	}
-
-	/**
-	 * Returns <code>true</code> if the platform is currently running in 
-	 * development mode.  That is, if special procedures are to be 
-	 * taken when defining plug-in class paths.  The platform is run
-	 * in development mode using the "-dev" command line argument.
-	 *
-	 * @return whether or not the platform is running in development mode
-	 * @deprecated Replaced by {@link Platform#inDevelopmentMode()}.
-	 */
-	public static boolean inDevelopmentMode() {
-		return Platform.inDevelopmentMode();
-	}
-
-	/**
-	 * Returns whether the platform is running.
-	 *
-	 * @return <code>true</code> if the platform is running, 
-	 *		and <code>false</code> otherwise
-	 * @deprecated Replaced by {@link Platform#isRunning()}.
-	 */
-	public static boolean isRunning() {
-		return InternalPlatform.getDefault().isRunning();
-	}
-
-	/**
-	 * Returns the complete plugin path defined by the file at the given location.
-	 * If the given location is <code>null</code> or does not indicate a valid 
-	 * plug-in path definition file, <code>null</code> is returned.
-	 *
-	 * @param pluginPathLocation the location of the plug-in path to load
-	 * @return the complete set of URLs which locate plug-ins
-	 * @deprecated This functionality has moved to the Eclipse Update manager plug-in.
-	 */
-	public static URL[] getPluginPath(URL pluginPathLocation) {
-		return InternalPlatform.getDefault().getPluginPath(pluginPathLocation);
-	}
-
-	/**
-	 * Returns whether the given location (typically a directory in the
-	 * local file system) contains the saved data for a platform. The
-	 * saved data for the platform is recognizable by the presence of
-	 * a special platform metadata subdirectory; however, this metadata
-	 * directory is not usually created unless there is some reason to do so
-	 * (for example, so that an active plug-in can save its state).
-	 *
-	 * @return <code>true</code> if the location contains the 
-	 *		saved data for a platform, and <code>false</code> otherwise
-	 * @deprecated In Eclipse 3.0 this method is no longer supported.
-	 * The implementation always returns <code>true</code>.
-	 */
-	public static boolean containsSavedPlatform(String location) {
-		return true;
-	}
-
-	/**
-	 * Instantiates and returns an instance of the named application's 
-	 * runnable entry point.
-	 * <code>null</code> is returned if the runnable cannot be found.
-	 *
-	 * @param applicationName the fully qualified name of an 
-	 * 		extension installed in the platform's <code>applications</code> 
-	 *		extension point (i.e., <code>org.eclipse.core.applications</code>).
-	 * @return a platform runnable
-	 * @exception Exception if there is a problem instantiating the specified runnable
-	 * @deprecated In Eclipse 3.0 this method is no longer supported.
-	 * The implementation always returns <code>null</code>.  See the related but 
-	 * non-API methods on <code>org.eclipse.core.runtime.adaptor.EclipseStarter</code>
-	 * in the org.eclipse.osgi plug-in.
-	 */
-	public static IPlatformRunnable getRunnable(String applicationName) throws Exception {
-		return null;
-	}
-	/**
-	 * Instantiates and returns an instance of the named class.  The class
-	 * must implement <code>IPlatformRunnable</code>.
-	 * If the class implements <code>IExecutableExtension</code>, the created
-	 * instance is initialized with the given arguments.
-	 * <code>null</code> is returned if the runnable cannot be found.
-	 *
-	 * @param pluginId the unique identifier of the plug-in containing the given class
-	 * @param className the fully qualified name of the class to instantiate
-	 * @param args the initialization arguments passed to the new instance
-	 * @return a platform runnable, or <code>null</code> if the runnable cannot
-	 *    be found
-	 * @exception Exception if there is a problem instantiating the specified runnable
-	 * @deprecated In Eclipse 3.0 this method is no longer supported.
-	 * The implementation always returns <code>null</code>.  See the related but 
-	 * non-API methods on <code>org.eclipse.core.runtime.adaptor.EclipseStarter</code>
-	 * in the org.eclipse.osgi plug-in.
-	 */
-	public static IPlatformRunnable getRunnable(String pluginId, String className, Object args) throws Exception {
-		return null;
-	}
-
-	/**
-	 * Launches the Platform to run a single application. 
-	 * This convenince method starts up the Platform,
-	 * runs the indicated application, and then shuts down
-	 * the Platform. The Platform must not be running already.
-	 *
-	 * @param applicationName The fully qualified name of an 
-	 * 		extension installed in the Platform plug-in's <code>applications</code> 
-	 *		extension-point (i.e., <code>org.eclipse.core.runtime.applications</code>).
-	 * @param pluginPathLocation the URL of the plug-in path; this is where
-	 *		the Platform is to find the code for plug-ins
-	 * @param location the location (usually a string path in the local file
-	 *		file system) for the saved platform state
-	 * @param args the array of command-line style argments which are passed
-	 *		to the Platform on initialization.  The arguments which are consumed by the
-	 * 		Platform's initialization are removed from the arg list.  This modified arg list is
-	 *		the return value of this method.  
-	 *@return the list of <code>args</code> which were supplied but not consumed
-	 *		by this method.  
-	 * @return the result, or <code>null</code> if none
-	 * @exception Exception if anything goes wrong
-	 * @see #startup
-	 * @deprecated In Eclipse 3.0 this method is no longer supported.
-	 * The implementation always returns <code>null</code>.  See the related but 
-	 * non-API methods on <code>org.eclipse.core.runtime.adaptor.EclipseStarter</code>
-	 * in the org.eclipse.osgi plug-in.
-	 */
-	public static Object run(String applicationName, URL pluginPathLocation, String location, String[] args) throws Exception {
-		return null;
-	}
-	/**
-	 * Launches the Platform to run a single application. 
-	 * This convenince method starts up the Platform,
-	 * runs the indicated application, and then shuts down
-	 * the Platform. The Platform must not be running already.
-	 *
-	 * @param applicationName The fully qualified name of an 
-	 * 		extension installed in the Platform plug-in's <code>applications</code> 
-	 *		extension-point (i.e., <code>org.eclipse.core.runtime.applications</code>).
-	 * @param pluginPathLocation the URL of the plug-in path; this is where
-	 *		the Platform is to find the code for plug-ins
-	 * @param location the location (usually a string path in the local file
-	 *		file system) for the saved platform state
-	 * @param args the array of command-line style argments which are passed
-	 *		to the Platform on initialization.  The arguments which are consumed by the
-	 * 		Platform's initialization are removed from the arg list.  This modified arg list is
-	 *		the return value of this method.
-	 * @param handler an optional handler invoked by the launched application
-	 *      at the point the application considers itself initialized. A typical
-	 *      use for the handler would be to take down any splash screen
-	 *      that was displayed by the caller of this method.
-	 *@return the list of <code>args</code> which were supplied but not consumed
-	 *		by this method.  
-	 * @return the result, or <code>null</code> if none
-	 * @exception Exception if anything goes wrong
-	 * @see #startup
-	 * @deprecated In Eclipse 3.0 this method is no longer supported.
-	 * The implementation always returns <code>null</code>.  See the related but 
-	 * non-API methods on <code>org.eclipse.core.runtime.adaptor.EclipseStarter</code>
-	 * in the org.eclipse.osgi plug-in.
-	 */
-	public static Object run(String applicationName, URL pluginPathLocation, String location, String[] args, Runnable handler) throws Exception {
-		return null;
-	}
-	/**
-	 * Shuts down the Platform. The Platform must be running. In the process,
-	 * each active plug-in is told to shutdown via <code>Plugin.shutdown</code>.
-	 * <p>
-	 * Note that the state of the Platform is not automatically saved
-	 * before shutting down.
-	 * </p>
-	 * <p>
-	 * On return, the Platform will no longer be running (but could
-	 * be re-launched with another call to <code>startup</code>). 
-	 * Any objects handed out by running Platform, including
-	 * Platform runnables obtained via <code>getRunnable</code>,
-	 * will be permanently invalid. The effects of attempting to invoke
-	 * methods on invalid objects is undefined.
-	 * </p>
-	 * @exception Exception if there were problems shutting down
-	 * @deprecated In Eclipse 3.0 this method is no longer supported.
-	 * The implementation does nothing.  See the related but 
-	 * non-API methods on <code>org.eclipse.core.runtime.adaptor.EclipseStarter</code>
-	 * in the org.eclipse.osgi plug-in.
-	 */
-	public static void shutdown() throws Exception {
-	}
-	/**
-	 * Launches the Eclipse Platform. The Platform must not be running.
-	 * <p>
-	 * The location of the started Platform is defined as follows:
-	 * <ul>
-	 * <li>If the <code>location</code> argument is specified, that value is used.  
-	 * <li>If <code>location</code> is <code>null</code> but <code>args</code> 
-	 *		contains a <code>-data&ltlocation&gt</code> pair, then the given value is used.  
-	 * <li> If neither is specified, <code>System.getProperty("user.dir")</code> is used.
-	 * </ul>
-	 * The plug-in path of the started Platform is defined as follows:
-	 * <ul>
-	 * <li>If the <code>pluginPathLocation</code> argument is specified, that value is tried.
-	 * <li>If <code>pluginPathLocation</code> is <code>null</code> but <code>args</code> 
-	 *		contains a <code>-plugins &ltlocation&gt</code> pair, then the given value is tried.  
-	 * <li>If neither value is specified or a given location does not exist, 
-	 * 		the Platform's location is searched.  
-	 * <li>Finally, the default plug-in path is used.  This value identifies the plug-ins in the 
-	 *		Platform's install location.
-	 * </ul>
-	 * @param pluginPathLocation the URL of the plug-in path; this is where
-	 *		the Platform is to find the code for plug-ins
-	 * @param location the location (usually a string path in the local file
-	 *		file system) for the saved Platform state
-	 * @param args the array of command-line style argments which are passed
-	 *		to the platform on initialization.  The arguments which are consumed by the
-	 * 		Platform's initialization are removed from the arg list.  This modified arg list is
-	 *		the return value of this method.  
-	 *	@return the list of <code>args</code> which were supplied but not consumed
-	 *		by this method.  
-	 * @exception Exception if there are problems starting the platform
-	 * @deprecated In Eclipse 3.0 this method is no longer supported.
-	 * The implementation always returns <code>null</code>.  See the related but 
-	 * non-API methods on <code>org.eclipse.core.runtime.adaptor.EclipseStarter</code>
-	 * in the org.eclipse.osgi plug-in.
-	 */
-	public static String[] startup(URL pluginPathLocation, String location, String[] args) throws Exception {
-		return null;
-	}
-	/**
-	 * Launches the Eclipse Platform. The Platform must not be running.
-	 * <p>
-	 * The location of the started Platform is defined as follows:
-	 * <ul>
-	 * <li>If the <code>location</code> argument is specified, that value is used.  
-	 * <li>If <code>location</code> is <code>null</code> but <code>args</code> 
-	 *		contains a <code>-data &ltlocation&gt</code> pair, then the given value is used.  
-	 * <li> If neither is specified, <code>System.getProperty("user.dir")</code> is used.
-	 * </ul>
-	 * The plug-in path of the started Platform is defined as follows:
-	 * <ul>
-	 * <li>If the <code>pluginPathLocation</code> argument is specified, that value is tried.
-	 * <li>If <code>pluginPathLocation</code> is <code>null</code> but <code>args</code> 
-	 *		contains a <code>-plugins &ltlocation&gt</code> pair, then the given value is tried.  
-	 * <li>If neither value is specified or a given location does not exist, 
-	 * 		the Platform's location is searched.  
-	 * <li>Finally, the default plug-in path is used.  This value identifies the plug-ins in the 
-	 *		Platform's install location.
-	 * </ul>
-	 * @param pluginPathLocation the URL of the plug-in path; this is where
-	 *		the Platform is to find the code for plug-ins
-	 * @param location the location (usually a string path in the local file
-	 *		file system) for the saved Platform state
-	 * @param args the array of command-line style argments which are passed
-	 *		to the platform on initialization.  The arguments which are consumed by the
-	 * 		Platform's initialization are removed from the arg list.  This modified arg list is
-	 *		the return value of this method. 
-	 * @param handler an optional handler invoked by the launched application
-	 *      at the point the application considers itself initialized. A typical
-	 *      use for the handler would be to take down any splash screen
-	 *      that was displayed by the caller of this method. 
-	 *	@return the list of <code>args</code> which were supplied but not consumed
-	 *		by this method.  
-	 * @exception Exception if there are problems starting the platform
-	 * @deprecated In Eclipse 3.0 this method is no longer supported.
-	 * The implementation always returns <code>null</code>.  See the related but 
-	 * non-API methods on <code>org.eclipse.core.runtime.adaptor.EclipseStarter</code>
-	 * in the org.eclipse.osgi plug-in.
-	 */
-	public static String[] startup(URL pluginPathLocation, String location, String[] args, Runnable handler) throws Exception {
-		return null;
-	}
-
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/boot/IPlatformConfiguration.java b/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/boot/IPlatformConfiguration.java
deleted file mode 100644
index c85359e..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/boot/IPlatformConfiguration.java
+++ /dev/null
@@ -1,575 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.boot;
-
-import java.io.IOException;
-import java.net.URL;
-
-/**
- * Platform configuration interface. Represents the runtime
- * configuration used by the Eclipse platform. Any configuration
- * changes do not take effect until next startup of the Eclipse
- * platform
- * 
- * @since 2.0
- * @deprecated 
- * In Eclipse 3.0 the Update mechanism was cleanly separated from the runtime.
- * <code>IPlatformConfiguration</code> is part of the Update story and as such has
- * been moved to {@link org.eclipse.update.configurator.IPlatformConfiguration} in the 
- * <code>org.eclipse.update.configurator</code> plug-in.
- * <p>
- * This interface must only be used by plug-ins 
- * which explicitly require the org.eclipse.core.runtime.compatibility plug-in.
- * </p>
- */
-public interface IPlatformConfiguration {
-
-	/**
-	 * Configuration entry representing an install site.
-	 * 
-	 * @since 2.0 
-	 */
-	public interface ISiteEntry {
-
-		/**
-		 * Returns the URL for this site
-		 * 
-		 * @return site url
-		 * @since 2.0
-		 */
-		public URL getURL();
-
-		/**
-		 * Returns the policy for this site
-		 * 
-		 * @return site policy
-		 * @since 2.0
-		 */
-		public ISitePolicy getSitePolicy();
-
-		/**
-		 * Sets the site policy
-		 * 
-		 * @param policy site policy
-		 * @since 2.0
-		 */
-		public void setSitePolicy(ISitePolicy policy);
-
-		/**
-		 * Returns a list of features visible on the site. Note, that this is simply a 
-		 * reflection of the site content. The features may or may not be actually configured.
-		 * 
-		 * @return an array of feature entries, or an empty array if no features are found.
-		 * A feature entry is returned as a path relative to the site URL
-		 * @since 2.0
-		 */
-		public String[] getFeatures();
-
-		/**
-		 * Returns a list of plug-ins visible on the site. Note, that this is simply a 
-		 * reflection of the site content and the current policy for the site. The plug-ins
-		 * may or may not end up being used by Eclipse (depends on which plug-in are 
-		 * actually bound by the platform).
-		 * 
-		 * @return an array of plug-in entries, or an empty array if no plug-ins are found.
-		 * A plug-in entry is returned as a path relative to the site URL		 * 
-		 * @since 2.0
-		 */
-		public String[] getPlugins();
-
-		/**
-		 * Returns a stamp reflecting the current state of the site. If called repeatedly,
-		 * returns the same value as long as no changes were made to the site (changes to
-		 * features or plugins).
-		 * 
-		 * @return site change stamp
-		 * @since 2.0
-		 */
-		public long getChangeStamp();
-
-		/**
-		 * Returns a stamp reflecting the current state of the features on the site. 
-		 * If called repeatedly, returns the same value as long as no changes were made to
-		 * features on the site.
-		 * 
-		 * @return site features change stamp 
-		 * @since 2.0
-		 */
-		public long getFeaturesChangeStamp();
-
-		/**
-		 * Returns a stamp reflecting the current state of the plug-ins on the site. 
-		 * If called repeatedly, returns the same value as long as no changes were made to
-		 * plug-ins on the site.
-		 * 
-		 * @return site plug-ins change stamp 
-		 * @since 2.0
-		 */
-		public long getPluginsChangeStamp();
-
-		/**
-		 * Returns an indication whether the site can be updated.
-		 * 
-		 * @return <code>true</code> if site can be updated, <code>false</code> otherwise
-		 * @since 2.0
-		 */
-		public boolean isUpdateable();
-
-		/**
-		 * Returns an indication whether the site represents an install site
-		 * that has been linked via a native installer (using the links/<linkfile>
-		 * mechanism)
-		 * 
-		 * @return <code>true</code> if the site is linked, <code>false</code> otherwise
-		 * @since 2.0
-		 */
-		public boolean isNativelyLinked();
-	}
-
-	/**
-	 * Site policy. The site policy object determines how plug-ins
-	 * contained on the site are processed during startup. In general,
-	 * there are 3 ways of configuring a site policy
-	 * <ul>
-	 * <li>explicitly specify which plug-ins are to be included at
-	 * startup (type==USER_INCLUDE). Any other plug-ins located
-	 * at the site are ignored at startup. This is typically the best
-	 * policy when using remote sites where the user wishes
-	 * to retain explicit control over the plug-ins that are included
-	 * from such site.
-	 * <li>explicitly specify which plug-ins are to be excluded at
-	 * startup (type==USER-EXCLUDE). All other plug-ins located
-	 * at the site are used at startup. This policy requires that
-	 * the site support an access "protocol" that allows plug-in
-	 * discovery. In general, these are sites defined using the "file"
-	 * URL protocol. This is typically the best policy for local
-	 * install sites (on the user system).
-	 * </ul>
-	 * 
-	 * @since 2.0
-	 */
-	public interface ISitePolicy extends org.eclipse.update.configurator.IPlatformConfiguration.ISitePolicy {
-
-		/**
-		 * Policy type constants.
-		 */
-
-		/** 
-		 * User-defined inclusion list. The list associated with this
-		 * policy type is interpreted as path entries to included plugin.xml
-		 * or fragment.xml <b>relative</b> to the site URL
-		 */
-		public static final int USER_INCLUDE = 0;
-
-		/**
-		 * User-defined exclusion list. The list associated with this
-		 * policy type is interpreted as path entries to excluded plugin.xml
-		 * or fragment.xml <b>relative</b> to the site URL
-		 */
-		public static final int USER_EXCLUDE = 1;
-
-		/**
-		 * Return policy type
-		 * 
-		 * @return policy type
-		 * @since 2.0
-		 */
-		public int getType();
-
-		/**
-		 * Return policy inclusion/ exclusion list
-		 * 
-		 * @return the list as an array
-		 * @since 2.0
-		 */
-		public String[] getList();
-
-		/**
-		 * Set new policy list. The list entries are interpreted based on the policy
-		 * type. See description of the policy type constants for details.
-		 * 
-		 * @param list policy inclusion/ exclusion list as an array.
-		 * Returns an empty array if there are no entries.
-		 * @see #USER_INCLUDE
-		 * @see #USER_EXCLUDE
-		 * @since 2.0
-		 */
-		public void setList(String[] list);
-	}
-
-	/**
-	 * Feature entry.
-	 * Represents runtime "hints" about configured features.
-	 * The information is used during execution to locate the
-	 * correct attribution information for a feature. Note,
-	 * that a typical configuration can declare multiple feature
-	 * entries. At execution time, only one can be selected as
-	 * the active primary feature. This is determined based on 
-	 * specified command line arguments or computed defaults.
-	 * 
-	 * @since 2.0
-	 */
-	public interface IFeatureEntry {
-
-		/**
-		 * Returns feature identifier.
-		 * @return feature identifier
-		 * @since 2.0
-		 */
-		public String getFeatureIdentifier();
-
-		/**
-		 * Returns the currently configured version for the feature.
-		 * @return feature version (as string), or <code>null</code>
-		 * @since 2.0
-		 */
-		public String getFeatureVersion();
-
-		/**
-		 * Returns the identifier of the feature plug-in for this feature entry.
-		 *  Note,      that there is no guarantee that a feature in fact
-		 * supplies a corresponding feature plugin, so the result can be
-		 * <code>null</code>. Also, if supplied, there is no guarantee that the
-		 * plugin will in fact be loaded into the plug-in registry at runtime
-		 * (due to rules and constraint checking performed by the registry
-		 * loading support). Consequently code making use of this method must
-		 * handle these conditions.
-		 * @return feature identifier (as string), or <code>null</code>
-		 * @since 2.1
-		 */
-		public String getFeaturePluginIdentifier();
-
-		/**
-		 * Returns the version of the feature plug-in for this feature
-		 * entry. Note, that there is no guarantee that a feature in fact
-		 * supplies a corresponding feature plugin, so the result can be
-		 * <code>null</code>. Also, if supplied, there is no guarantee that the
-		 * plugin will in fact be loaded into the plug-in registry at runtime
-		 * (due to rules and constraint checking performed by the registry
-		 * loading support). Consequently code making use of this method must
-		 * handle these conditions.
-		 * @return feature version (as string), or <code>null</code>
-		 * @since 2.0
-		 */
-		public String getFeaturePluginVersion();
-
-		/**
-		 * Returns the application to run when this feature is the
-		 * primary feature.
-		 * @return application identifier, or <code>null</code> 
-		 * @since 2.0
-		 */
-		public String getFeatureApplication();
-
-		/**
-		 * Returns URLs to the feature "root" locations. The root
-		 * URLs are install locations of the feature plugin and its
-		 * fragments.
-		 *
-		 * @return array of URLs, or an empty array
-		 * @since 2.0
-		 */
-		public URL[] getFeatureRootURLs();
-
-		/**
-		 * Returns an indication whether this feature has been defined
-		 * to act as a primary feature.
-		 * @return <code>true</code> if the feature can be primary,
-		 * <code>false</code> otherwise.
-		 * @since 2.0
-		 */
-		public boolean canBePrimary();
-	}
-
-	/**
-	 * Create a site entry
-	 *
-	 * @param url site URL
-	 * @param policy site policy
-	 * @return created site entry
-	 * @since 2.0
-	 */
-	public ISiteEntry createSiteEntry(URL url, ISitePolicy policy);
-
-	/**
-	 * Create a site policy. The policy determines the way the site
-	 * plug-in are processed at startpu
-	 *
-	 * @param type policy type
-	 * @param list an array of site-relative paths representing the
-	 * inclusion/ exclusion list
-	 * @return created site policy entry
-	 * @since 2.0
-	 */
-	public ISitePolicy createSitePolicy(int type, String[] list);
-
-	/**
-	 * Create a feature entry
-	 * @param id feature identifier. Must not be <code>null</code>.
-	 * @param version feature version (as String). Can be <code>null</code>.
-	 * @param pluginVersion version of the feature plugin (as String). Can be
-	 * <code>null</code>.
-	 * @param primary <code>true</code> if the feature is defined as a primary
-	 * feature, otherwise <code>false</code>.
-	 * @param application identifier of the application to run when 
-	 * this feature is the primary feature. Can be <code>null</code>.
-	 * If specified, the identifier must represent a valid extension 
-	 * registered in the <code>org.eclipse.core.runtime.applications</code>
-	 * extension point.
-	 * @param an array of URLs to feature root directories.
-	 * These are URLs to install locations for the feature plugin
-	 * and its fragments. Can be <code>null</code>.
-	 * @return create feature entry
-	 * @since 2.0
-	 */
-	public IFeatureEntry createFeatureEntry(String id, String version, String pluginVersion, boolean primary, String application, URL[] root);
-
-	/**
-	 * Create a feature entry
-	 * @param id feature identifier. Must not be <code>null</code>.
-	 * @param version feature version (as String). Can be <code>null</code>.
-	 * @param pluginIdentifier identifier of the feature plugin (as String). Can
-	 * be <code>null</code>.
-	 * @param  pluginVersion  version of the feature plugin (as String). Can be
-	 * <code>null</code>.
-	 * @param primary <code>true</code> if the feature is defined as a primary
-	 * feature, otherwise <code>false</code>.
-	 * @param application identifier of the application to run when
-	 * this feature is the primary feature. Can be <code>null</code>.
-	 * If specified, the identifier must represent a valid extension
-	 * registered in the <code>org.eclipse.core.runtime.applications</code>
-	 * extension point.
-	 * @param an array of URLs to feature root directories.
-	 * These are URLs to install locations for the feature plugin
-	 * and its fragments. Can be <code>null</code>.
-	 * @return create feature entry
-	 * @since 2.1
-	 */
-	public IFeatureEntry createFeatureEntry(String id, String version, String pluginIdentifier, String pluginVersion, boolean primary, String application, URL[] root);
-
-	/**
-	 * Configures the specified site entry. If a site entry with the
-	 * same site URL is already configured, the entry is <b>not</b> replaced.
-	 * 
-	 * @param entry site entry 
-	 * @since 2.0
-	 */
-	public void configureSite(ISiteEntry entry);
-
-	/**
-	 * Configures the specified site entry. If a site entry with the
-	 * same site URL is already configured, the replacement behavior for
-	 * the entry can be specified.
-	 * 
-	 * @param entry site entry 
-	 * @param  flag indicating whether an existing configured entry with
-	 * the same URL should be replaced (<code>true</code>) or not (<code>false</code>).
-	 * @since 2.0
-	 */
-	public void configureSite(ISiteEntry entry, boolean replace);
-
-	/**
-	 * Unconfigures the specified entry. Does not do anything if the entry
-	 * is not configured.
-	 * 
-	 * @param entry site entry
-	 * @since 2.0
-	 */
-	public void unconfigureSite(ISiteEntry entry);
-
-	/**
-	 * Returns configured site entries
-	 * 
-	 * @return array of site entries. Returns an empty array if no sites are
-	 * configured
-	 * @since 2.0
-	 */
-	public ISiteEntry[] getConfiguredSites();
-
-	/**
-	 * Returns a site entry matching the specified URL
-	 * 
-	 * @param url site url
-	 * @return matching site entry, or <code>null</code> if no match found
-	 * @since 2.0
-	 */
-	public ISiteEntry findConfiguredSite(URL url);
-
-	/**
-	 * Configures the feature entry.
-	 * If another feature entry with the same feature identifier 
-	 * already exists, it is replaced.
-	 * @param entry feature entry
-	 * @since 2.0
-	 */
-	public void configureFeatureEntry(IFeatureEntry entry);
-
-	/**
-	 * Unconfigures the specified feature entry if it exists.
-	 * @param entry feature entry
-	 * @since 2.0
-	 */
-	public void unconfigureFeatureEntry(IFeatureEntry entry);
-
-	/**
-	 * Returns a list of configured feature entries.
-	 * @return array or entries, or an empty array if no entries
-	 * are configured
-	 * @since 2.0
-	 */
-	public IFeatureEntry[] getConfiguredFeatureEntries();
-
-	/**
-	 * Locates the specified feature entry.
-	 * @param id feature identifier
-	 * @return ferature entry, or <code>null</code>.
-	 * @since 2.0
-	 */
-	public IFeatureEntry findConfiguredFeatureEntry(String id);
-
-	/**
-	 * Returns the URL location of the configuration information
-	 * 
-	 * @return configuration location URL, or <code>null</code> if the
-	 * configuration location could not be determined.
-	 * @since 2.0
-	 */
-	public URL getConfigurationLocation();
-
-	/**
-	 * Returns a stamp reflecting the current state of the configuration. If called repeatedly,
-	 * returns the same value as long as no changes were made to the configuration (changes to
-	 * sites, features or plugins).
-	 * 
-	 * @return configuration change stamp
-	 * @since 2.0
-	 */
-	public long getChangeStamp();
-
-	/**
-	 * Returns a stamp reflecting the current state of the features in the configuration. 
-	 * If called repeatedly, returns the same value as long as no changes were made to
-	 * features in the configuration.
-	 * 
-	 * @return configuration features change stamp 
-	 * @since 2.0
-	 */
-	public long getFeaturesChangeStamp();
-
-	/**
-	 * Returns a stamp reflecting the current state of the plug-ins in the configuration. 
-	 * If called repeatedly, returns the same value as long as no changes were made to
-	 * plug-ins in the configuration.
-	 * 
-	 * @return configuration plug-ins change stamp 
-	 * @since 2.0
-	 */
-	public long getPluginsChangeStamp();
-
-	/**
-	 * Returns the identifier of the configured primary feature. A primary feature
-	 * is used to specify product customization information for a running instance
-	 * of Eclipse. 
-	 * 
-	 * @return primary feature identifier, or <code>null</code> if none configured
-	 * @since 2.0
-	 */
-	public String getPrimaryFeatureIdentifier();
-
-	/**
-	 * Computes the plug-in path for this configuration. The result includes all plug-ins
-	 * visible on each of the configured sites based on each site policy.
-	 * 
-	 * @return an array of plug-in path elements (full URL entries), or an empty array.
-	 * @since 2.0
-	 */
-	public URL[] getPluginPath();
-
-	/**
-	 * Returns an array of bootstrap plugin identifiers whose
-	 * location needs to be explicitly identified in the configuration.
-	 * 
-	 * @return an array of identifiers, or empty array
-	 * otherwise
-	 * @since 2.0
-	 */
-	public String[] getBootstrapPluginIdentifiers();
-
-	/**
-	 * Sets the location of a bootstrap plugin.
-	 * 
-	 * @see IPlatformConfiguration#getBootstrapPluginIdentifiers()
-	 * @param id plugin identifier. Must match one of the entries returned
-	 * by getBootstrapPluginIdentifiers()
-	 * @param location
-	 * @since 2.0
-	 */
-	public void setBootstrapPluginLocation(String id, URL location);
-
-	/**
-	 * Returns an indication whether the configuration can be updated.
-	 * 
-	 * @return <code>true</code> if configuration can be updated, <code>false</code> 
-	 * otherwise
-	 * @since 2.0
-	 */
-	public boolean isUpdateable();
-
-	/**
-	 * Returns an indication whether the configuration is transient. A transient
-	 * configuration typically represents a scenario where the configuration
-	 * was computed for a single instantiation of the platform and is not
-	 * guaranteed to be valid on subsequent instantiations.
-	 * 
-	 * @return <code>true</code> if configuration is transient, <code>false</code> 
-	 * otherwise
-	 * @since 2.0
-	 */
-	public boolean isTransient();
-
-	/**
-	 * Indicates whether the configuration is transient or not. A transient
-	 * configuration typically represents a scenario where the configuration
-	 * was computed for a single instantiation of the platform and is not
-	 * guaranteed to be valid on subsequent instantiations. This method has
-	 * no effect if called on the current platform configuration.
-	 * 
-	 * @see BootLoader#getCurrentPlatformConfiguration()
-	 * @param value <code>true</code> if configuration is transient, <code>false</code> 
-	 * otherwise
-	 * @since 2.0
-	 */
-	public void isTransient(boolean value);
-
-	/**
-	 * Called to refresh the configuration information. In particular,
-	 * causes change stamps to be recomputed based on the current
-	 * configuration state, and updates the lists of available plug-ins.
-	 * @since 2.0
-	 */
-	public void refresh();
-
-	/**
-	 * Called to save the configuration information
-	 * @since 2.0
-	 */
-	public void save() throws IOException;
-
-	/**
-	 * Called to save the configuration information in the
-	 * specified location
-	 * 
-	 * @param url save location.
-	 * @since 2.0
-	 */
-	public void save(URL url) throws IOException;
-
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/boot/IPlatformRunnable.java b/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/boot/IPlatformRunnable.java
deleted file mode 100644
index 85a5e9b..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/boot/IPlatformRunnable.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.boot;
-
-/**
- * Bootstrap type for the platform. Platform runnables represent executable 
- * entry points into plug-ins.  Runnables can be configured into the Platform's
- * <code>org.eclipse.core.runtime.applications</code> extension-point 
- * or be made available through code or extensions on other plug-in's extension-points.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @deprecated In Eclipse 3.0 the boot plug-in and packages were deprecated.
- * This class has been replaced by an equivalent class in the org.eclipse.core.runtime package.
- * 
- * @see org.eclipse.core.runtime.IPlatformRunnable
- */
-
-public interface IPlatformRunnable extends org.eclipse.core.runtime.IPlatformRunnable {
-
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/internal/boot/FeatureEntry.java b/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/internal/boot/FeatureEntry.java
deleted file mode 100644
index dabedc2..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/internal/boot/FeatureEntry.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.boot;
-
-import java.net.URL;
-import org.eclipse.core.boot.IPlatformConfiguration.IFeatureEntry;
-import org.eclipse.update.configurator.IPlatformConfiguration;
-
-public class FeatureEntry implements IFeatureEntry {
-	private IPlatformConfiguration.IFeatureEntry newFeatureEntry;
-
-	public FeatureEntry(IPlatformConfiguration.IFeatureEntry fe) {
-		newFeatureEntry = fe;
-	}
-
-	public String getFeatureIdentifier() {
-		return newFeatureEntry.getFeatureIdentifier();
-	}
-
-	public String getFeatureVersion() {
-		return newFeatureEntry.getFeatureVersion();
-	}
-
-	public String getFeaturePluginIdentifier() {
-		return newFeatureEntry.getFeaturePluginIdentifier();
-	}
-
-	public String getFeaturePluginVersion() {
-		return newFeatureEntry.getFeaturePluginVersion();
-	}
-
-	public String getFeatureApplication() {
-		return newFeatureEntry.getFeatureApplication();
-	}
-
-	public URL[] getFeatureRootURLs() {
-		return newFeatureEntry.getFeatureRootURLs();
-	}
-
-	public boolean canBePrimary() {
-		return newFeatureEntry.canBePrimary();
-	}
-
-	public IPlatformConfiguration.IFeatureEntry getNewFeatureEntry() {
-		return newFeatureEntry;
-	}
-
-	public boolean equals(Object o) {
-		if (o instanceof FeatureEntry) {
-			return newFeatureEntry.equals(((FeatureEntry) o).newFeatureEntry);
-		}
-		return false;
-	}
-
-	public int hashCode() {
-		return newFeatureEntry.hashCode();
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/internal/boot/PlatformConfiguration.java b/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/internal/boot/PlatformConfiguration.java
deleted file mode 100644
index a2a3f9a..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/internal/boot/PlatformConfiguration.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.boot;
-
-import java.io.IOException;
-import java.net.URL;
-import org.eclipse.core.boot.IPlatformConfiguration;
-
-public class PlatformConfiguration implements IPlatformConfiguration {
-	private org.eclipse.update.configurator.IPlatformConfiguration newConfig;
-
-	public PlatformConfiguration(org.eclipse.update.configurator.IPlatformConfiguration config) {
-		newConfig = config;
-	}
-
-	public ISiteEntry createSiteEntry(URL url, ISitePolicy policy) {
-		return new SiteEntry(newConfig.createSiteEntry(url, ((SitePolicy) policy).getNewPolicy()));
-	}
-
-	public ISitePolicy createSitePolicy(int type, String[] list) {
-		return new SitePolicy(newConfig.createSitePolicy(type, list));
-	}
-
-	public IFeatureEntry createFeatureEntry(String id, String version, String pluginVersion, boolean primary, String application, URL[] root) {
-		return new FeatureEntry(newConfig.createFeatureEntry(id, version, pluginVersion, primary, application, root));
-	}
-
-	public IFeatureEntry createFeatureEntry(String id, String version, String pluginIdentifier, String pluginVersion, boolean primary, String application, URL[] root) {
-		return new FeatureEntry(newConfig.createFeatureEntry(id, version, pluginIdentifier, pluginVersion, primary, application, root));
-	}
-
-	public void configureSite(ISiteEntry entry) {
-		newConfig.configureSite(((SiteEntry) entry).getNewSiteEntry());
-	}
-
-	public void configureSite(ISiteEntry entry, boolean replace) {
-		newConfig.configureSite(((SiteEntry) entry).getNewSiteEntry(), replace);
-	}
-
-	public void unconfigureSite(ISiteEntry entry) {
-		newConfig.unconfigureSite(((SiteEntry) entry).getNewSiteEntry());
-	}
-
-	public ISiteEntry[] getConfiguredSites() {
-		org.eclipse.update.configurator.IPlatformConfiguration.ISiteEntry[] sites = newConfig.getConfiguredSites();
-		SiteEntry[] oldSites = new SiteEntry[sites.length];
-		for (int i = 0; i < sites.length; i++)
-			oldSites[i] = new SiteEntry(sites[i]);
-		return oldSites;
-	}
-
-	public ISiteEntry findConfiguredSite(URL url) {
-		org.eclipse.update.configurator.IPlatformConfiguration.ISiteEntry siteEntry = newConfig.findConfiguredSite(url);
-		if (siteEntry == null)
-			return null;
-		return new SiteEntry(siteEntry);
-	}
-
-	public void configureFeatureEntry(IFeatureEntry entry) {
-		newConfig.configureFeatureEntry(((FeatureEntry) entry).getNewFeatureEntry());
-	}
-
-	public void unconfigureFeatureEntry(IFeatureEntry entry) {
-		newConfig.unconfigureFeatureEntry(((FeatureEntry) entry).getNewFeatureEntry());
-	}
-
-	public IFeatureEntry[] getConfiguredFeatureEntries() {
-		org.eclipse.update.configurator.IPlatformConfiguration.IFeatureEntry[] entries = newConfig.getConfiguredFeatureEntries();
-		FeatureEntry[] oldEntries = new FeatureEntry[entries.length];
-		for (int i = 0; i < entries.length; i++)
-			oldEntries[i] = new FeatureEntry(entries[i]);
-		return oldEntries;
-	}
-
-	public IFeatureEntry findConfiguredFeatureEntry(String id) {
-		return new FeatureEntry(newConfig.findConfiguredFeatureEntry(id));
-	}
-
-	public URL getConfigurationLocation() {
-		return newConfig.getConfigurationLocation();
-	}
-
-	public long getChangeStamp() {
-		return newConfig.getChangeStamp();
-	}
-
-	public long getFeaturesChangeStamp() {
-		return newConfig.getFeaturesChangeStamp();
-	}
-
-	public long getPluginsChangeStamp() {
-		return newConfig.getPluginsChangeStamp();
-	}
-
-	public String getPrimaryFeatureIdentifier() {
-		return newConfig.getPrimaryFeatureIdentifier();
-	}
-
-	public URL[] getPluginPath() {
-		return newConfig.getPluginPath();
-	}
-
-	public String[] getBootstrapPluginIdentifiers() {
-		return newConfig.getBootstrapPluginIdentifiers();
-	}
-
-	public void setBootstrapPluginLocation(String id, URL location) {
-		newConfig.setBootstrapPluginLocation(id, location);
-	}
-
-	public boolean isUpdateable() {
-		return newConfig.isUpdateable();
-	}
-
-	public boolean isTransient() {
-		return newConfig.isTransient();
-	}
-
-	public void isTransient(boolean value) {
-		newConfig.isTransient(value);
-	}
-
-	public void refresh() {
-		newConfig.refresh();
-	}
-
-	public void save() throws IOException {
-		newConfig.save();
-	}
-
-	public void save(URL url) throws IOException {
-		newConfig.save(url);
-	}
-
-	public boolean equals(Object o) {
-		if (o instanceof PlatformConfiguration)
-			return newConfig.equals(((PlatformConfiguration) o).newConfig);
-		return false;
-	}
-
-	public int hashCode() {
-		return newConfig.hashCode();
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/internal/boot/SiteEntry.java b/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/internal/boot/SiteEntry.java
deleted file mode 100644
index ea61feb..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/internal/boot/SiteEntry.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.boot;
-
-import java.net.URL;
-import org.eclipse.core.boot.IPlatformConfiguration.ISiteEntry;
-import org.eclipse.core.boot.IPlatformConfiguration.ISitePolicy;
-import org.eclipse.update.configurator.IPlatformConfiguration;
-
-public class SiteEntry implements ISiteEntry {
-	private org.eclipse.update.configurator.IPlatformConfiguration.ISiteEntry newSiteEntry;
-
-	public SiteEntry(IPlatformConfiguration.ISiteEntry entry) {
-		newSiteEntry = entry;
-	}
-
-	public URL getURL() {
-		return newSiteEntry.getURL();
-	}
-
-	public ISitePolicy getSitePolicy() {
-		return new SitePolicy(newSiteEntry.getSitePolicy());
-	}
-
-	public void setSitePolicy(ISitePolicy policy) {
-		newSiteEntry.setSitePolicy(((SitePolicy) policy).getNewPolicy());
-	}
-
-	public String[] getFeatures() {
-		return newSiteEntry.getFeatures();
-	}
-
-	public String[] getPlugins() {
-		return newSiteEntry.getPlugins();
-	}
-
-	public long getChangeStamp() {
-		return newSiteEntry.getChangeStamp();
-	}
-
-	public long getFeaturesChangeStamp() {
-		return newSiteEntry.getFeaturesChangeStamp();
-	}
-
-	public long getPluginsChangeStamp() {
-		return newSiteEntry.getPluginsChangeStamp();
-	}
-
-	public boolean isUpdateable() {
-		return newSiteEntry.isUpdateable();
-	}
-
-	public boolean isNativelyLinked() {
-		return newSiteEntry.isNativelyLinked();
-	}
-
-	public org.eclipse.update.configurator.IPlatformConfiguration.ISiteEntry getNewSiteEntry() {
-		return newSiteEntry;
-	}
-
-	public boolean equals(Object o) {
-		if (o instanceof SiteEntry)
-			return newSiteEntry.equals(((SiteEntry) o).newSiteEntry);
-		return false;
-	}
-
-	public int hashCode() {
-		return newSiteEntry.hashCode();
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/internal/boot/SitePolicy.java b/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/internal/boot/SitePolicy.java
deleted file mode 100644
index a73e86a..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-boot/org/eclipse/core/internal/boot/SitePolicy.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.boot;
-
-import org.eclipse.core.boot.IPlatformConfiguration.ISitePolicy;
-import org.eclipse.update.configurator.IPlatformConfiguration;
-
-public class SitePolicy implements ISitePolicy {
-	private IPlatformConfiguration.ISitePolicy newPolicy;
-
-	public SitePolicy(IPlatformConfiguration.ISitePolicy policy) {
-		newPolicy = policy;
-	}
-
-	public int getType() {
-		return newPolicy.getType();
-	}
-
-	public String[] getList() {
-		return newPolicy.getList();
-	}
-
-	public void setList(String[] list) {
-		newPolicy.setList(list);
-	}
-
-	public IPlatformConfiguration.ISitePolicy getNewPolicy() {
-		return newPolicy;
-	}
-
-	public boolean equals(Object o) {
-		if (o instanceof SitePolicy)
-			return newPolicy.equals(((SitePolicy) o).newPolicy);
-		return false;
-	}
-
-	public int hashCode() {
-		return newPolicy.hashCode();
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/internal/model/IModel.java b/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/internal/model/IModel.java
deleted file mode 100644
index 8f406c1..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/internal/model/IModel.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.core.internal.model;
-
-public interface IModel {
-
-	public static final int INDENT = 2;
-	public static final int RADIX = 36;
-
-	public static final String TRUE = "true"; //$NON-NLS-1$
-	public static final String FALSE = "false"; //$NON-NLS-1$
-
-	public static final String REGISTRY = "plugin-registry"; //$NON-NLS-1$
-	public static final String REGISTRY_PATH = "path"; //$NON-NLS-1$
-
-	public static final String FRAGMENT = "fragment"; //$NON-NLS-1$
-	public static final String FRAGMENT_ID = "id"; //$NON-NLS-1$
-	public static final String FRAGMENT_NAME = "name"; //$NON-NLS-1$
-	public static final String FRAGMENT_PROVIDER = "provider-name"; //$NON-NLS-1$
-	public static final String FRAGMENT_VERSION = "version"; //$NON-NLS-1$
-	public static final String FRAGMENT_PLUGIN_ID = "plugin-id"; //$NON-NLS-1$
-	public static final String FRAGMENT_PLUGIN_VERSION = "plugin-version"; //$NON-NLS-1$
-	public static final String FRAGMENT_PLUGIN_MATCH = "match"; //$NON-NLS-1$
-	public static final String FRAGMENT_PLUGIN_MATCH_PERFECT = "perfect"; //$NON-NLS-1$
-	public static final String FRAGMENT_PLUGIN_MATCH_EQUIVALENT = "equivalent"; //$NON-NLS-1$
-	public static final String FRAGMENT_PLUGIN_MATCH_COMPATIBLE = "compatible"; //$NON-NLS-1$
-	public static final String FRAGMENT_PLUGIN_MATCH_GREATER_OR_EQUAL = "greaterOrEqual"; //$NON-NLS-1$
-
-	public static final String PLUGIN = "plugin"; //$NON-NLS-1$
-	public static final String PLUGIN_ID = "id"; //$NON-NLS-1$
-	public static final String PLUGIN_NAME = "name"; //$NON-NLS-1$
-	public static final String PLUGIN_VENDOR = "vendor-name"; //$NON-NLS-1$
-	public static final String PLUGIN_PROVIDER = "provider-name"; //$NON-NLS-1$
-	public static final String PLUGIN_VERSION = "version"; //$NON-NLS-1$
-	public static final String PLUGIN_CLASS = "class"; //$NON-NLS-1$
-
-	public static final String PLUGIN_REQUIRES = "requires"; //$NON-NLS-1$
-	public static final String PLUGIN_REQUIRES_PLATFORM = "platform-version"; //$NON-NLS-1$
-	public static final String PLUGIN_REQUIRES_PLUGIN = "plugin"; //$NON-NLS-1$
-	public static final String PLUGIN_REQUIRES_PLUGIN_VERSION = "version"; //$NON-NLS-1$
-	public static final String PLUGIN_REQUIRES_OPTIONAL = "optional"; //$NON-NLS-1$
-	public static final String PLUGIN_REQUIRES_IMPORT = "import"; //$NON-NLS-1$
-	public static final String PLUGIN_REQUIRES_EXPORT = "export"; //$NON-NLS-1$
-	public static final String PLUGIN_REQUIRES_MATCH = "match"; //$NON-NLS-1$
-	public static final String PLUGIN_REQUIRES_MATCH_EXACT = "exact"; //$NON-NLS-1$
-	public static final String PLUGIN_REQUIRES_MATCH_PERFECT = "perfect"; //$NON-NLS-1$
-	public static final String PLUGIN_REQUIRES_MATCH_EQUIVALENT = "equivalent"; //$NON-NLS-1$
-	public static final String PLUGIN_REQUIRES_MATCH_COMPATIBLE = "compatible"; //$NON-NLS-1$
-	public static final String PLUGIN_REQUIRES_MATCH_GREATER_OR_EQUAL = "greaterOrEqual"; //$NON-NLS-1$
-
-	public static final String PLUGIN_KEY_VERSION_SEPARATOR = "_"; //$NON-NLS-1$
-
-	public static final String RUNTIME = "runtime"; //$NON-NLS-1$
-
-	public static final String LIBRARY = "library"; //$NON-NLS-1$
-	public static final String LIBRARY_NAME = "name"; //$NON-NLS-1$
-	public static final String LIBRARY_SOURCE = "source"; //$NON-NLS-1$
-	public static final String LIBRARY_TYPE = "type"; //$NON-NLS-1$
-	public static final String LIBRARY_EXPORT = "export"; //$NON-NLS-1$
-	public static final String LIBRARY_EXPORT_MASK = "name"; //$NON-NLS-1$
-	public static final String LIBRARY_PACKAGES = "packages"; //$NON-NLS-1$
-	public static final String LIBRARY_PACKAGES_PREFIXES = "prefixes"; //$NON-NLS-1$
-
-	public static final String EXTENSION_POINT = "extension-point"; //$NON-NLS-1$
-	public static final String EXTENSION_POINT_NAME = "name"; //$NON-NLS-1$
-	public static final String EXTENSION_POINT_ID = "id"; //$NON-NLS-1$
-	public static final String EXTENSION_POINT_SCHEMA = "schema"; //$NON-NLS-1$
-
-	public static final String EXTENSION = "extension"; //$NON-NLS-1$
-	public static final String EXTENSION_NAME = "name"; //$NON-NLS-1$
-	public static final String EXTENSION_ID = "id"; //$NON-NLS-1$
-	public static final String EXTENSION_TARGET = "point"; //$NON-NLS-1$
-
-	public static final String ELEMENT = "element"; //$NON-NLS-1$
-	public static final String ELEMENT_NAME = "name"; //$NON-NLS-1$
-	public static final String ELEMENT_VALUE = "value"; //$NON-NLS-1$
-
-	public static final String PROPERTY = "property"; //$NON-NLS-1$
-	public static final String PROPERTY_NAME = "name"; //$NON-NLS-1$
-	public static final String PROPERTY_VALUE = "value"; //$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/internal/model/PluginMap.java b/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/internal/model/PluginMap.java
deleted file mode 100644
index 7e3918a..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/internal/model/PluginMap.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.model;
-
-import java.util.*;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.PluginVersionIdentifier;
-import org.eclipse.core.runtime.model.PluginModel;
-
-/**
- * A map specialized to manage plugin models (either for plugins or fragments).
- */
-public class PluginMap {
-	private Map map;
-	private boolean preserveOrder;
-	private int size;
-	private boolean replaceDuplicates;
-
-	public PluginMap(Map pluginModels) {
-		this(pluginModels, true, false);
-	}
-
-	public PluginMap(Map pluginModels, boolean preserveOrder, boolean replaceDuplicates) {
-		this.map = pluginModels;
-		this.preserveOrder = preserveOrder;
-		this.replaceDuplicates = replaceDuplicates;
-	}
-
-	public void add(PluginModel pluginModel) {
-
-		String key = pluginModel.getId();
-		List verList = (List) map.get(key);
-
-		// create new index entry if one does not exist for plugin
-		if (verList == null) {
-			verList = new LinkedList();
-			map.put(key, verList);
-		}
-
-		int i = 0;
-		// insert plugin into list maintaining version order
-		if (preserveOrder)
-			for (; i < verList.size(); i++) {
-				PluginModel element = (PluginModel) verList.get(i);
-				if (getVersionIdentifier(pluginModel).equals(getVersionIdentifier(element))) {
-					if (replaceDuplicates)
-						verList.set(i, pluginModel);
-					return; // ignore duplicates
-				}
-				if (getVersionIdentifier(pluginModel).isGreaterThan(getVersionIdentifier(element)))
-					break;
-			}
-		verList.add(i, pluginModel);
-		size++;
-	}
-
-	public PluginModel get(String id, String version) {
-		List versions = (List) map.get(id);
-		if (versions == null || versions.isEmpty())
-			return null;
-		if (version == null)
-			// Just return the first one in the list (random)			
-			return (PluginModel) versions.get(0);
-		int versionCount = versions.size();
-		for (int i = 0; i < versionCount; i++) {
-			PluginModel pluginModel = (PluginModel) versions.get(i);
-			if (pluginModel.getVersion().equals(version))
-				return pluginModel;
-		}
-		return null;
-	}
-
-	public List getVersions(String id) {
-		return (List) map.get(id);
-	}
-
-	public PluginModel getAny(String id) {
-		List versions = (List) map.get(id);
-		if (versions == null || versions.isEmpty())
-			return null;
-		return (PluginModel) versions.get(0);
-	}
-
-	private PluginVersionIdentifier getVersionIdentifier(PluginModel model) {
-		if (PluginVersionIdentifier.validateVersion(model.getVersion()).getSeverity() != IStatus.OK)
-			return new PluginVersionIdentifier("0.0.0"); //$NON-NLS-1$
-		return new PluginVersionIdentifier(model.getVersion());
-	}
-
-	public int size() {
-		return size;
-	}
-
-	public void markReadOnly() {
-		for (Iterator it = map.values().iterator(); it.hasNext();) {
-			List list = (List) it.next();
-			int count = list.size();
-			for (int i = 0; i < count; i++)
-				((PluginModel) list.get(i)).markReadOnly();
-		}
-	}
-
-	public PluginModel remove(String pluginId, String version) {
-		List versions = (List) map.get(pluginId);
-		if (versions == null)
-			return null;
-		for (Iterator iter = versions.iterator(); iter.hasNext();) {
-			PluginModel pluginModel = (PluginModel) iter.next();
-			if (pluginModel.getId().equals(pluginId) && pluginModel.getVersion().equals(version)) {
-				if (versions.size() == 1)
-					map.remove(pluginId);
-				else
-					iter.remove();
-				size--;
-				return pluginModel;
-			}
-		}
-		return null;
-	}
-
-	public void removeVersions(String pluginId) {
-		List versions = (List) map.remove(pluginId);
-		if (versions != null)
-			size -= versions.size();
-	}
-
-	public void copyToArray(Object[] array) {
-		int index = 0;
-		for (Iterator mapIter = map.values().iterator(); mapIter.hasNext();) {
-			List versions = (List) mapIter.next();
-			for (Iterator listIiter = versions.iterator(); listIiter.hasNext();)
-				array[index++] = listIiter.next();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/internal/model/PluginParser.java b/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/internal/model/PluginParser.java
deleted file mode 100644
index 1aed94c..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/internal/model/PluginParser.java
+++ /dev/null
@@ -1,795 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.core.internal.model;
-
-import java.util.*;
-import javax.xml.parsers.SAXParserFactory;
-import org.eclipse.core.internal.runtime.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.model.*;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.ServiceReference;
-import org.xml.sax.*;
-import org.xml.sax.helpers.DefaultHandler;
-
-public class PluginParser extends DefaultHandler implements IModel {
-
-	// concrete object factory
-	Factory factory;
-
-	// File name for this plugin or fragment
-	// This to help with error reporting
-	String locationName = null;
-
-	// Current State Information
-	Stack stateStack = new Stack();
-
-	// Current object stack (used to hold the current object we are
-	// populating in this plugin descriptor
-	Stack objectStack = new Stack();
-
-	Locator locator = null;
-
-	// Valid States
-	private static final int IGNORED_ELEMENT_STATE = 0;
-	private static final int INITIAL_STATE = 1;
-	private static final int PLUGIN_STATE = 2;
-	private static final int PLUGIN_RUNTIME_STATE = 3;
-	private static final int PLUGIN_REQUIRES_STATE = 4;
-	private static final int PLUGIN_EXTENSION_POINT_STATE = 5;
-	private static final int PLUGIN_EXTENSION_STATE = 6;
-	private static final int RUNTIME_LIBRARY_STATE = 7;
-	private static final int LIBRARY_EXPORT_STATE = 8;
-//	private static final int LIBRARY_PACKAGES_STATE = 12;
-	private static final int PLUGIN_REQUIRES_IMPORT_STATE = 9;
-	private static final int CONFIGURATION_ELEMENT_STATE = 10;
-	private static final int FRAGMENT_STATE = 11;
-
-	// Keep a group of vectors as a temporary scratch space.  These
-	// vectors will be used to populate arrays in the plugin descriptor
-	// once processing of the XML file is complete.
-	private static final int EXTENSION_POINT_INDEX = 0;
-	private static final int EXTENSION_INDEX = 1;
-	private static final int LAST_INDEX = 1;
-	private Vector scratchVectors[] = new Vector[LAST_INDEX + 1];
-
-	private ServiceReference parserReference;
-
-	public PluginParser(Factory factory) {
-		super();
-		this.factory = factory;
-	}
-
-	/**
-	 * Receive a Locator object for document events.
-	 *
-	 * <p>By default, do nothing.  Application writers may override this
-	 * method in a subclass if they wish to store the locator for use
-	 * with other document events.</p>
-	 *
-	 * @param locator A locator for all SAX document events.
-	 * @see org.xml.sax.ContentHandler#setDocumentLocator
-	 * @see org.xml.sax.Locator
-	 */
-	public void setDocumentLocator(Locator locator) {
-		this.locator = locator;
-	}
-
-	public void characters(char[] ch, int start, int length) {
-		int state = ((Integer) stateStack.peek()).intValue();
-		if (state != CONFIGURATION_ELEMENT_STATE)
-			return;
-		if (state == CONFIGURATION_ELEMENT_STATE) {
-			// Accept character data within an element, is when it is
-			// part of a configuration element (i.e. an element within an EXTENSION element
-			ConfigurationElementModel currentConfigElement = (ConfigurationElementModel) objectStack.peek();
-			String value = new String(ch, start, length);
-			String oldValue = currentConfigElement.getValueAsIs();
-			if (oldValue == null) {
-				if (value.trim().length() != 0)
-					currentConfigElement.setValue(value);
-			} else {
-				currentConfigElement.setValue(oldValue + value);
-			}
-		}
-	}
-
-	public void endDocument() {
-	}
-
-	public void endElement(String uri, String elementName, String qName) {
-		switch (((Integer) stateStack.peek()).intValue()) {
-			case IGNORED_ELEMENT_STATE :
-				stateStack.pop();
-				break;
-			case INITIAL_STATE :
-				// shouldn't get here
-				internalError(NLS.bind(Messages.parse_internalStack, elementName));
-				break;
-			case PLUGIN_STATE :
-			case FRAGMENT_STATE :
-				if (elementName.equals(PLUGIN) || elementName.equals(FRAGMENT)) {
-					stateStack.pop();
-					PluginModel root = (PluginModel) objectStack.peek();
-
-					// Put the extension points into this plugin
-					Vector extPointVector = scratchVectors[EXTENSION_POINT_INDEX];
-					if (extPointVector.size() > 0) {
-						root.setDeclaredExtensionPoints((ExtensionPointModel[]) extPointVector.toArray(new ExtensionPointModel[extPointVector.size()]));
-						scratchVectors[EXTENSION_POINT_INDEX].removeAllElements();
-					}
-
-					// Put the extensions into this plugin too
-					Vector extVector = scratchVectors[EXTENSION_INDEX];
-					if (extVector.size() > 0) {
-						root.setDeclaredExtensions((ExtensionModel[]) extVector.toArray(new ExtensionModel[extVector.size()]));
-						scratchVectors[EXTENSION_INDEX].removeAllElements();
-					}
-				}
-				break;
-			case PLUGIN_RUNTIME_STATE :
-				if (elementName.equals(RUNTIME)) {
-					stateStack.pop();
-					// take the vector of library entries and put them into the plugin
-					// descriptor
-					Vector libVector = (Vector) objectStack.pop();
-					if (libVector.size() > 0) {
-						PluginModel model = (PluginModel) objectStack.peek();
-						model.setRuntime((LibraryModel[]) libVector.toArray(new LibraryModel[libVector.size()]));
-					}
-				}
-				break;
-			case PLUGIN_REQUIRES_STATE :
-				if (elementName.equals(PLUGIN_REQUIRES)) {
-					stateStack.pop();
-					// take the vector of prerequisites and put them into the plugin
-					// descriptor
-					Vector importVector = (Vector) objectStack.pop();
-					if (importVector.size() > 0) {
-						PluginModel parentDescriptor = (PluginModel) objectStack.peek();
-						parentDescriptor.setRequires((PluginPrerequisiteModel[]) importVector.toArray(new PluginPrerequisiteModel[importVector.size()]));
-					}
-				}
-				break;
-			case PLUGIN_EXTENSION_POINT_STATE :
-				if (elementName.equals(EXTENSION_POINT)) {
-					stateStack.pop();
-				}
-				break;
-			case PLUGIN_EXTENSION_STATE :
-				if (elementName.equals(EXTENSION)) {
-					stateStack.pop();
-					// Finish up extension object
-					ExtensionModel currentExtension = (ExtensionModel) objectStack.pop();
-					PluginModel parent = (PluginModel) objectStack.peek();
-					currentExtension.setParent(parent);
-					scratchVectors[EXTENSION_INDEX].addElement(currentExtension);
-				}
-				break;
-			case RUNTIME_LIBRARY_STATE :
-				if (elementName.equals(LIBRARY)) {
-					LibraryModel curLibrary = (LibraryModel) objectStack.pop();
-					// Clean up the exports for this library entry
-					Vector exportsVector = (Vector) objectStack.pop();
-					if (exportsVector.size() > 0) {
-						curLibrary.setExports((String[]) exportsVector.toArray(new String[exportsVector.size()]));
-					}
-
-					// Add this library element to the vector "runtime" on the stack
-					Vector libraryVector = (Vector) objectStack.peek();
-					libraryVector.addElement(curLibrary);
-					stateStack.pop();
-				}
-				break;
-			case LIBRARY_EXPORT_STATE :
-				if (elementName.equals(LIBRARY_EXPORT)) {
-					stateStack.pop();
-				}
-				break;
-			case PLUGIN_REQUIRES_IMPORT_STATE :
-				if (elementName.equals(PLUGIN_REQUIRES_IMPORT)) {
-					stateStack.pop();
-				}
-				break;
-			case CONFIGURATION_ELEMENT_STATE :
-				// We don't care what the element name was
-				stateStack.pop();
-				// Now finish up the configuration element object
-				ConfigurationElementModel currentConfigElement = (ConfigurationElementModel) objectStack.pop();
-
-				String value = currentConfigElement.getValueAsIs();
-				if (value != null) {
-					currentConfigElement.setValue(value.trim());
-				}
-
-				Object parent = objectStack.peek();
-				currentConfigElement.setParent(parent);
-				if (((Integer) stateStack.peek()).intValue() == PLUGIN_EXTENSION_STATE) {
-					// Want to add this configuration element to the subelements of an extension
-					ConfigurationElementModel[] oldValues = (ConfigurationElementModel[]) ((ExtensionModel) parent).getSubElements();
-					int size = (oldValues == null) ? 0 : oldValues.length;
-					ConfigurationElementModel[] newValues = new ConfigurationElementModel[size + 1];
-					for (int i = 0; i < size; i++) {
-						newValues[i] = oldValues[i];
-					}
-					newValues[size] = currentConfigElement;
-					((ExtensionModel) parent).setSubElements(newValues);
-				} else {
-					ConfigurationElementModel[] oldValues = (ConfigurationElementModel[]) ((ConfigurationElementModel) parent).getSubElements();
-					int size = (oldValues == null) ? 0 : oldValues.length;
-					ConfigurationElementModel[] newValues = new ConfigurationElementModel[size + 1];
-					for (int i = 0; i < size; i++) {
-						newValues[i] = oldValues[i];
-					}
-					newValues[size] = currentConfigElement;
-					((ConfigurationElementModel) parent).setSubElements(newValues);
-				}
-				break;
-		}
-	}
-
-	public void error(SAXParseException ex) {
-		logStatus(ex);
-	}
-
-	public void fatalError(SAXParseException ex) throws SAXException {
-		logStatus(ex);
-		throw ex;
-	}
-
-	public void handleExtensionPointState(String elementName, Attributes attributes) {
-
-		// We ignore all elements under extension points (if there are any)
-		stateStack.push(new Integer(IGNORED_ELEMENT_STATE));
-		internalError(NLS.bind(Messages.parse_unknownElement, EXTENSION_POINT, elementName));
-	}
-
-	public void handleExtensionState(String elementName, Attributes attributes) {
-
-		// You need to change the state here even though we will be executing the same
-		// code for ExtensionState and ConfigurationElementState.  We ignore the name
-		// of the element for ConfigurationElements.  When we are wrapping up, we will
-		// want to add each configuration element object to the subElements vector of
-		// its parent configuration element object.  However, the first configuration
-		// element object we created (the last one we pop off the stack) will need to
-		// be added to a vector in the extension object called _configuration.
-		stateStack.push(new Integer(CONFIGURATION_ELEMENT_STATE));
-
-		// create a new Configuration Element and push it onto the object stack
-		ConfigurationElementModel currentConfigurationElement = factory.createConfigurationElement();
-		objectStack.push(currentConfigurationElement);
-		currentConfigurationElement.setName(elementName);
-
-		// Processing the attributes of a configuration element involves creating
-		// a new configuration property for each attribute and populating the configuration
-		// property with the name/value pair of the attribute.  Note there will be one
-		// configuration property for each attribute
-		parseConfigurationElementAttributes(attributes);
-	}
-
-	public void handleInitialState(String elementName, Attributes attributes) {
-		if (elementName.equals(PLUGIN)) {
-			stateStack.push(new Integer(PLUGIN_STATE));
-			parsePluginAttributes(attributes);
-		} else if (elementName.equals(FRAGMENT)) {
-			stateStack.push(new Integer(FRAGMENT_STATE));
-			parseFragmentAttributes(attributes);
-		} else {
-			stateStack.push(new Integer(IGNORED_ELEMENT_STATE));
-			internalError(NLS.bind(Messages.parse_unknownTopElement, elementName));
-		}
-	}
-
-	public void handleLibraryExportState(String elementName, Attributes attributes) {
-
-		// All elements ignored.
-		stateStack.push(new Integer(IGNORED_ELEMENT_STATE));
-		internalError(NLS.bind(Messages.parse_unknownElement, LIBRARY_EXPORT, elementName));
-	}
-
-	public void handleLibraryState(String elementName, Attributes attributes) {
-		if (elementName.equals(LIBRARY_EXPORT)) {
-			// Change State
-			stateStack.push(new Integer(LIBRARY_EXPORT_STATE));
-			// The top element on the stack much be a library element
-			LibraryModel currentLib = (LibraryModel) objectStack.peek();
-
-			if (attributes == null)
-				return;
-
-			String maskValue = null;
-
-			// Process Attributes
-			int len = attributes.getLength();
-			for (int i = 0; i < len; i++) {
-				String attrName = attributes.getLocalName(i);
-				String attrValue = attributes.getValue(i).trim();
-
-				if (attrName.equals(LIBRARY_EXPORT_MASK))
-					maskValue = attrValue;
-				else
-					internalError(NLS.bind(Messages.parse_unknownAttribute, LIBRARY, attrName));
-			}
-
-			// set up mask tables
-			// pop off the library - already in currentLib
-			objectStack.pop();
-			Vector exportMask = (Vector) objectStack.peek();
-			// push library back on
-			objectStack.push(currentLib);
-			if ((maskValue != null) && (!exportMask.contains(maskValue)))
-				exportMask.addElement(maskValue);
-			return;
-		}
-
-		if (elementName.equals(LIBRARY_PACKAGES)) {
-			LibraryModel currentLib = (LibraryModel) objectStack.peek();
-			if (attributes == null)
-				return;
-			for (int i = 0; i < attributes.getLength(); i++) {
-				if (LIBRARY_PACKAGES_PREFIXES.equals(attributes.getLocalName(i))) {
-					String line = attributes.getValue(i);
-					String[] prefixes = getArrayFromList(line);
-					currentLib.setPackagePrefixes(prefixes);
-				}
-			}
-			return;
-		}
-
-		// Any other element is invalid
-		stateStack.push(new Integer(IGNORED_ELEMENT_STATE));
-		internalError(NLS.bind(Messages.parse_unknownElement, LIBRARY, elementName));
-		return;
-	}
-
-	/**
-	 * convert a list of comma-separated tokens into an array
-	 */
-	protected static String[] getArrayFromList(String line) {
-		if (line == null || line.trim().length() == 0)
-			return null;
-		Vector list = new Vector();
-		StringTokenizer tokens = new StringTokenizer(line, ","); //$NON-NLS-1$
-		while (tokens.hasMoreTokens()) {
-			String token = tokens.nextToken().trim();
-			if (token.length() != 0)
-				list.addElement(token);
-		}
-		return list.isEmpty() ? null : (String[]) list.toArray(new String[0]);
-	}
-
-	public void handlePluginState(String elementName, Attributes attributes) {
-
-		if (elementName.equals(RUNTIME)) {
-			// We should only have one Runtime element in a plugin or fragment
-			Object whatIsIt = objectStack.peek();
-			if (((whatIsIt instanceof PluginDescriptorModel) && (((PluginDescriptorModel) objectStack.peek()).getRuntime() != null)) || ((whatIsIt instanceof PluginFragmentModel) && (((PluginFragmentModel) objectStack.peek()).getRuntime() != null))) {
-				// This is at least the 2nd Runtime element we have
-				// hit.  Ignore it and give an error.
-				stateStack.push(new Integer(IGNORED_ELEMENT_STATE));
-				return;
-			}
-			stateStack.push(new Integer(PLUGIN_RUNTIME_STATE));
-			// Push a new vector to hold all the library entries
-			objectStack.push(new Vector());
-			return;
-		}
-		if (elementName.equals(PLUGIN_REQUIRES)) {
-			stateStack.push(new Integer(PLUGIN_REQUIRES_STATE));
-			// Push a new vector to hold all the prerequisites
-			objectStack.push(new Vector());
-			parseRequiresAttributes(attributes);
-			return;
-		}
-		if (elementName.equals(EXTENSION_POINT)) {
-			stateStack.push(new Integer(PLUGIN_EXTENSION_POINT_STATE));
-			parseExtensionPointAttributes(attributes);
-			return;
-		}
-		if (elementName.equals(EXTENSION)) {
-			stateStack.push(new Integer(PLUGIN_EXTENSION_STATE));
-			parseExtensionAttributes(attributes);
-			return;
-		}
-
-		// If we get to this point, the element name is one we don't currently accept.
-		// Set the state to indicate that this element will be ignored
-		stateStack.push(new Integer(IGNORED_ELEMENT_STATE));
-		internalError(NLS.bind(Messages.parse_unknownElement, PLUGIN + " / " + FRAGMENT, elementName)); //$NON-NLS-1$ 
-	}
-
-	public void handleRequiresImportState(String elementName, Attributes attributes) {
-
-		// All elements ignored.
-		stateStack.push(new Integer(IGNORED_ELEMENT_STATE));
-		internalError(NLS.bind(Messages.parse_unknownElement, PLUGIN_REQUIRES_IMPORT, elementName));
-	}
-
-	public void handleRequiresState(String elementName, Attributes attributes) {
-
-		if (elementName.equals(PLUGIN_REQUIRES_IMPORT)) {
-			parsePluginRequiresImport(attributes);
-			return;
-		}
-		// If we get to this point, the element name is one we don't currently accept.
-		// Set the state to indicate that this element will be ignored
-		stateStack.push(new Integer(IGNORED_ELEMENT_STATE));
-		internalError(NLS.bind(Messages.parse_unknownElement, PLUGIN_REQUIRES, elementName));
-	}
-
-	public void handleRuntimeState(String elementName, Attributes attributes) {
-
-		if (elementName.equals(LIBRARY)) {
-			// Change State
-			stateStack.push(new Integer(RUNTIME_LIBRARY_STATE));
-			// Process library attributes
-			parseLibraryAttributes(attributes);
-			return;
-		}
-		// If we get to this point, the element name is one we don't currently accept.
-		// Set the state to indicate that this element will be ignored
-		stateStack.push(new Integer(IGNORED_ELEMENT_STATE));
-		internalError(NLS.bind(Messages.parse_unknownElement, RUNTIME, elementName));
-	}
-
-	public void ignoreableWhitespace(char[] ch, int start, int length) {
-	}
-
-	private void logStatus(SAXParseException ex) {
-		String name = ex.getSystemId();
-		if (name == null)
-			name = locationName;
-		if (name == null)
-			name = ""; //$NON-NLS-1$
-		else
-			name = name.substring(1 + name.lastIndexOf("/")); //$NON-NLS-1$
-
-		String msg;
-		if (name.equals("")) //$NON-NLS-1$
-			msg = NLS.bind(Messages.parse_error, ex.getMessage());
-		else
-			msg = NLS.bind(Messages.parse_errorNameLineColumn, (new String[] {name, Integer.toString(ex.getLineNumber()), Integer.toString(ex.getColumnNumber()), ex.getMessage()}));
-		factory.error(new Status(IStatus.WARNING, Platform.PI_RUNTIME, Platform.PARSE_PROBLEM, msg, ex));
-	}
-
-	synchronized public PluginModel parsePlugin(InputSource in) throws Exception {
-		SAXParserFactory factory = acquireXMLParsing();
-		if (factory == null)
-			return null; // TODO we log an error
-
-		try {
-			locationName = in.getSystemId();
-			factory.setNamespaceAware(true);
-			factory.setNamespaceAware(true);
-			try {
-				factory.setFeature("http://xml.org/sax/features/string-interning", true); //$NON-NLS-1$
-			} catch (SAXException se) {
-				// ignore; we can still operate without string-interning
-			}
-			factory.setValidating(false);
-			factory.newSAXParser().parse(in, this);
-			return (PluginModel) objectStack.pop();
-		} finally {
-			releaseXMLParsing();
-		}
-	}
-
-	private SAXParserFactory acquireXMLParsing() {
-		parserReference = InternalPlatform.getDefault().getBundleContext().getServiceReference("javax.xml.parsers.SAXParserFactory"); //$NON-NLS-1$
-		if (parserReference == null)
-			return null;
-		return (SAXParserFactory) InternalPlatform.getDefault().getBundleContext().getService(parserReference);
-	}
-
-	private void releaseXMLParsing() {
-		if (parserReference != null)
-			InternalPlatform.getDefault().getBundleContext().ungetService(parserReference);
-	}
-
-	public void parseConfigurationElementAttributes(Attributes attributes) {
-
-		ConfigurationElementModel parentConfigurationElement = (ConfigurationElementModel) objectStack.peek();
-		parentConfigurationElement.setStartLine(locator.getLineNumber());
-
-		Vector propVector = null;
-
-		// process attributes
-		int len = (attributes != null) ? attributes.getLength() : 0;
-		if (len == 0)
-			return;
-		propVector = new Vector();
-
-		for (int i = 0; i < len; i++) {
-			String attrName = attributes.getLocalName(i);
-			String attrValue = attributes.getValue(i);
-
-			ConfigurationPropertyModel currentConfigurationProperty = factory.createConfigurationProperty();
-			currentConfigurationProperty.setName(attrName);
-			currentConfigurationProperty.setValue(attrValue);
-			propVector.addElement(currentConfigurationProperty);
-		}
-		parentConfigurationElement.setProperties((ConfigurationPropertyModel[]) propVector.toArray(new ConfigurationPropertyModel[propVector.size()]));
-		propVector = null;
-	}
-
-	public void parseExtensionAttributes(Attributes attributes) {
-
-		PluginModel parent = (PluginModel) objectStack.peek();
-		ExtensionModel currentExtension = factory.createExtension();
-		currentExtension.setStartLine(locator.getLineNumber());
-		objectStack.push(currentExtension);
-
-		// Process Attributes
-		int len = (attributes != null) ? attributes.getLength() : 0;
-		for (int i = 0; i < len; i++) {
-			String attrName = attributes.getLocalName(i);
-			String attrValue = attributes.getValue(i).trim();
-
-			if (attrName.equals(EXTENSION_NAME))
-				currentExtension.setName(attrValue);
-			else if (attrName.equals(EXTENSION_ID))
-				currentExtension.setId(attrValue);
-			else if (attrName.equals(EXTENSION_TARGET)) {
-				// check if point is specified as a simple or qualified name
-				String targetName;
-				if (attrValue.lastIndexOf('.') == -1) {
-					String baseId = parent instanceof PluginDescriptorModel ? parent.getId() : ((PluginFragmentModel) parent).getPlugin();
-					targetName = baseId + "." + attrValue; //$NON-NLS-1$
-				} else
-					targetName = attrValue;
-				currentExtension.setExtensionPoint(targetName);
-			} else
-				internalError(NLS.bind(Messages.parse_unknownAttribute, EXTENSION, attrName));
-		}
-	}
-
-	public void parseExtensionPointAttributes(Attributes attributes) {
-
-		ExtensionPointModel currentExtPoint = factory.createExtensionPoint();
-		currentExtPoint.setStartLine(locator.getLineNumber());
-
-		// Process Attributes
-		int len = (attributes != null) ? attributes.getLength() : 0;
-		for (int i = 0; i < len; i++) {
-			String attrName = attributes.getLocalName(i);
-			String attrValue = attributes.getValue(i).trim();
-
-			if (attrName.equals(EXTENSION_POINT_NAME))
-				currentExtPoint.setName(attrValue);
-			else if (attrName.equals(EXTENSION_POINT_ID))
-				currentExtPoint.setId(attrValue);
-			else if (attrName.equals(EXTENSION_POINT_SCHEMA))
-				currentExtPoint.setSchema(attrValue);
-			else
-				internalError(NLS.bind(Messages.parse_unknownAttribute, EXTENSION_POINT, attrName));
-		}
-		// currentExtPoint contains a pointer to the parent plugin descriptor.
-		PluginModel root = (PluginModel) objectStack.peek();
-		currentExtPoint.setParent(root);
-
-		// Now populate the the vector just below us on the objectStack with this extension point
-		scratchVectors[EXTENSION_POINT_INDEX].addElement(currentExtPoint);
-	}
-
-	public void parseFragmentAttributes(Attributes attributes) {
-		PluginFragmentModel current = factory.createPluginFragment();
-		current.setStartLine(locator.getLineNumber());
-		objectStack.push(current);
-
-		// process attributes
-		int len = attributes.getLength();
-		for (int i = 0; i < len; i++) {
-			String attrName = attributes.getLocalName(i);
-			String attrValue = attributes.getValue(i).trim();
-
-			if (attrName.equals(FRAGMENT_ID))
-				current.setId(attrValue);
-			else if (attrName.equals(FRAGMENT_NAME))
-				current.setName(attrValue);
-			else if (attrName.equals(FRAGMENT_VERSION))
-				current.setVersion(attrValue);
-			else if (attrName.equals(FRAGMENT_PROVIDER))
-				current.setProviderName(attrValue);
-			else if (attrName.equals(FRAGMENT_PLUGIN_ID))
-				current.setPlugin(attrValue);
-			else if (attrName.equals(FRAGMENT_PLUGIN_VERSION))
-				current.setPluginVersion(attrValue);
-			else if (attrName.equals(FRAGMENT_PLUGIN_MATCH)) {
-				if (FRAGMENT_PLUGIN_MATCH_PERFECT.equals(attrValue))
-					current.setMatch(PluginFragmentModel.FRAGMENT_MATCH_PERFECT);
-				else if (FRAGMENT_PLUGIN_MATCH_EQUIVALENT.equals(attrValue))
-					current.setMatch(PluginFragmentModel.FRAGMENT_MATCH_EQUIVALENT);
-				else if (FRAGMENT_PLUGIN_MATCH_COMPATIBLE.equals(attrValue))
-					current.setMatch(PluginFragmentModel.FRAGMENT_MATCH_COMPATIBLE);
-				else if (FRAGMENT_PLUGIN_MATCH_GREATER_OR_EQUAL.equals(attrValue))
-					current.setMatch(PluginFragmentModel.FRAGMENT_MATCH_GREATER_OR_EQUAL);
-				else
-					internalError(NLS.bind(Messages.parse_validMatch, attrValue));
-			} else
-				internalError(NLS.bind(Messages.parse_unknownAttribute, FRAGMENT, attrName));
-		}
-	}
-
-	public void parseLibraryAttributes(Attributes attributes) {
-		// Push a vector to hold the export mask 
-		objectStack.push(new Vector());
-		LibraryModel current = factory.createLibrary();
-		current.setStartLine(locator.getLineNumber());
-		objectStack.push(current);
-
-		// Now the objectStack should contain the following:
-		//	plugin descriptor or fragment (bottom of the stack)
-		//	vector to hold all the library entries
-		//  vector to hold the export mask for this library entry
-		//  this library entry (top of the stack)
-
-		// process attributes
-		int len = (attributes != null) ? attributes.getLength() : 0;
-		for (int i = 0; i < len; i++) {
-			String attrName = attributes.getLocalName(i);
-			String attrValue = attributes.getValue(i).trim();
-
-			if (attrName.equals(LIBRARY_NAME))
-				current.setName(attrValue);
-			else if (attrName.equals(LIBRARY_TYPE)) {
-				attrValue = attrValue.toLowerCase();
-				if (attrValue.equals(LibraryModel.CODE) || attrValue.equals(LibraryModel.RESOURCE))
-					current.setType(attrValue.toLowerCase());
-				else
-					internalError(NLS.bind(Messages.parse_unknownLibraryType, attrValue, current.getName()));
-			} else
-				internalError(NLS.bind(Messages.parse_unknownAttribute, LIBRARY, attrName));
-		}
-	}
-
-	public void parsePluginAttributes(Attributes attributes) {
-
-		PluginDescriptorModel current = factory.createPluginDescriptor();
-		current.setStartLine(locator.getLineNumber());
-		objectStack.push(current);
-
-		// process attributes
-		int len = attributes.getLength();
-		for (int i = 0; i < len; i++) {
-			String attrName = attributes.getLocalName(i);
-			String attrValue = attributes.getValue(i).trim();
-
-			if (attrName.equals(PLUGIN_ID))
-				current.setId(attrValue);
-			else if (attrName.equals(PLUGIN_NAME))
-				current.setName(attrValue);
-			else if (attrName.equals(PLUGIN_VERSION))
-				current.setVersion(attrValue);
-			else if (attrName.equals(PLUGIN_VENDOR) || (attrName.equals(PLUGIN_PROVIDER)))
-				current.setProviderName(attrValue);
-			else if (attrName.equals(PLUGIN_CLASS))
-				current.setPluginClass(attrValue);
-			else
-				internalError(NLS.bind(Messages.parse_unknownAttribute, PLUGIN, attrName));
-		}
-	}
-
-	public void parsePluginRequiresImport(Attributes attributes) {
-		PluginPrerequisiteModel current = factory.createPluginPrerequisite();
-		current.setStartLine(locator.getLineNumber());
-
-		// process attributes
-		int len = (attributes != null) ? attributes.getLength() : 0;
-		for (int i = 0; i < len; i++) {
-			String attrName = attributes.getLocalName(i);
-			String attrValue = attributes.getValue(i).trim();
-
-			if (attrName.equals(PLUGIN_REQUIRES_PLUGIN))
-				current.setPlugin(attrValue);
-			else if (attrName.equals(PLUGIN_REQUIRES_PLUGIN_VERSION))
-				current.setVersion(attrValue);
-			else if (attrName.equals(PLUGIN_REQUIRES_OPTIONAL))
-				current.setOptional(TRUE.equalsIgnoreCase(attrValue));
-			else if (attrName.equals(PLUGIN_REQUIRES_MATCH)) {
-				if (PLUGIN_REQUIRES_MATCH_PERFECT.equals(attrValue))
-					current.setMatchByte(PluginPrerequisiteModel.PREREQ_MATCH_PERFECT);
-				else if ((PLUGIN_REQUIRES_MATCH_EQUIVALENT.equals(attrValue)) || (PLUGIN_REQUIRES_MATCH_EXACT.equals(attrValue)))
-					current.setMatchByte(PluginPrerequisiteModel.PREREQ_MATCH_EQUIVALENT);
-				else if (PLUGIN_REQUIRES_MATCH_COMPATIBLE.equals(attrValue))
-					current.setMatchByte(PluginPrerequisiteModel.PREREQ_MATCH_COMPATIBLE);
-				else if (PLUGIN_REQUIRES_MATCH_GREATER_OR_EQUAL.equals(attrValue))
-					current.setMatchByte(PluginPrerequisiteModel.PREREQ_MATCH_GREATER_OR_EQUAL);
-				else
-					internalError(NLS.bind(Messages.parse_validMatch, attrValue));
-			} else if (attrName.equals(PLUGIN_REQUIRES_EXPORT)) {
-				if (TRUE.equals(attrValue))
-					current.setExport(true);
-				else if (FALSE.equals(attrValue))
-					current.setExport(false);
-				else
-					internalError(NLS.bind(Messages.parse_validExport, attrValue));
-			} else
-				internalError(NLS.bind(Messages.parse_unknownAttribute, PLUGIN_REQUIRES_IMPORT, attrName));
-
-		}
-		// Populate the vector of prerequisites with this new element
-		((Vector) objectStack.peek()).addElement(current);
-	}
-
-	public void parseRequiresAttributes(Attributes attributes) {
-	}
-
-	static String replace(String s, String from, String to) {
-		String str = s;
-		int fromLen = from.length();
-		int toLen = to.length();
-		int ix = str.indexOf(from);
-		while (ix != -1) {
-			str = str.substring(0, ix) + to + str.substring(ix + fromLen);
-			ix = str.indexOf(from, ix + toLen);
-		}
-		return str;
-	}
-
-	public void startDocument() {
-		stateStack.push(new Integer(INITIAL_STATE));
-		for (int i = 0; i <= LAST_INDEX; i++) {
-			scratchVectors[i] = new Vector();
-		}
-	}
-
-	public void startElement(String uri, String elementName, String qName, Attributes attributes) {
-		switch (((Integer) stateStack.peek()).intValue()) {
-			case INITIAL_STATE :
-				handleInitialState(elementName, attributes);
-				break;
-			case FRAGMENT_STATE :
-				handlePluginState(elementName, attributes);
-				break;
-			case PLUGIN_STATE :
-				handlePluginState(elementName, attributes);
-				break;
-			case PLUGIN_RUNTIME_STATE :
-				handleRuntimeState(elementName, attributes);
-				break;
-			case PLUGIN_REQUIRES_STATE :
-				handleRequiresState(elementName, attributes);
-				break;
-			case PLUGIN_EXTENSION_POINT_STATE :
-				handleExtensionPointState(elementName, attributes);
-				break;
-			case PLUGIN_EXTENSION_STATE :
-			case CONFIGURATION_ELEMENT_STATE :
-				handleExtensionState(elementName, attributes);
-				break;
-			case RUNTIME_LIBRARY_STATE :
-				handleLibraryState(elementName, attributes);
-				break;
-			case LIBRARY_EXPORT_STATE :
-				handleLibraryExportState(elementName, attributes);
-				break;
-			case PLUGIN_REQUIRES_IMPORT_STATE :
-				handleRequiresImportState(elementName, attributes);
-				break;
-			default :
-				stateStack.push(new Integer(IGNORED_ELEMENT_STATE));
-				internalError(NLS.bind(Messages.parse_unknownTopElement, elementName));
-		}
-	}
-
-	public void warning(SAXParseException ex) {
-		logStatus(ex);
-	}
-
-	private void internalError(String message) {
-		if (locationName != null)
-			factory.error(new Status(IStatus.WARNING, Platform.PI_RUNTIME, Platform.PARSE_PROBLEM, locationName + ": " + message, null)); //$NON-NLS-1$
-		else
-			factory.error(new Status(IStatus.WARNING, Platform.PI_RUNTIME, Platform.PARSE_PROBLEM, message, null));
-	}
-
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/internal/model/RegistryLoader.java b/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/internal/model/RegistryLoader.java
deleted file mode 100644
index 53bf9ef..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/internal/model/RegistryLoader.java
+++ /dev/null
@@ -1,255 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.core.internal.model;
-
-import java.io.*;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Properties;
-import org.eclipse.core.internal.runtime.InternalPlatform;
-import org.eclipse.core.internal.runtime.Messages;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.model.*;
-import org.eclipse.osgi.util.NLS;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXParseException;
-
-public class RegistryLoader {
-	private Factory factory;
-
-	// debug support
-	private boolean debug = false;
-	private long lastTick = System.currentTimeMillis();//used for performance timing
-
-	private RegistryLoader(Factory factory, boolean debug) {
-		super();
-		this.debug = debug;
-		this.factory = factory;
-	}
-
-	private void debug(String msg) {
-		long thisTick = System.currentTimeMillis();
-		System.out.println("RegistryLoader: " + msg + " [+" + (thisTick - lastTick) + "ms]"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		lastTick = thisTick;
-	}
-
-	private String[] getPathMembers(URL path) {
-		String[] list = null;
-		String protocol = path.getProtocol();
-		if (protocol.equals("file")) { //$NON-NLS-1$
-			list = (new File(path.getFile())).list();
-		} else {
-			// XXX: attempt to read URL and see if we got html dir page
-		}
-		return list == null ? new String[0] : list;
-	}
-
-	/**
-	 * Reports an error and returns true.
-	 */
-	private boolean parseProblem(String message) {
-		factory.error(new Status(IStatus.WARNING, Platform.PI_RUNTIME, Platform.PARSE_PROBLEM, message, null));
-		return true;
-	}
-
-	private PluginRegistryModel parseRegistry(URL[] pluginPath) {
-		long startTick = System.currentTimeMillis();
-		PluginRegistryModel result = processManifestFiles(pluginPath);
-		if (InternalPlatform.DEBUG) {
-			long endTick = System.currentTimeMillis();
-			debug("Parsed Registry: " + (endTick - startTick) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		return result;
-	}
-
-	public static PluginRegistryModel parseRegistry(URL[] pluginPath, Factory factory, boolean debug) {
-		return new RegistryLoader(factory, debug).parseRegistry(pluginPath);
-	}
-
-	private PluginModel processManifestFile(URL manifest) {
-		InputStream is = null;
-		try {
-			is = manifest.openStream();
-		} catch (IOException e) {
-			if (debug)
-				debug("No plugin found for: " + manifest); //$NON-NLS-1$
-			return null;
-		}
-		PluginModel result = null;
-		try {
-			try {
-				InputSource in = new InputSource(is);
-				// Give the system id a value in case we want it for
-				// error reporting within the parser.
-				in.setSystemId(manifest.getFile());
-				result = new PluginParser((Factory) factory).parsePlugin(in);
-			} finally {
-				is.close();
-			}
-		} catch (SAXParseException se) {
-			/* exception details logged by parser */
-			factory.error(new Status(IStatus.WARNING, Platform.PI_RUNTIME, Platform.PARSE_PROBLEM, NLS.bind(Messages.parse_errorProcessing, manifest), null));
-		} catch (Exception e) {
-			factory.error(new Status(IStatus.WARNING, Platform.PI_RUNTIME, Platform.PARSE_PROBLEM, NLS.bind(Messages.parse_errorProcessing, manifest + ":  " + e.getMessage()), null)); //$NON-NLS-1$
-		}
-		return result;
-	}
-
-	private PluginRegistryModel processManifestFiles(URL[] pluginPath) {
-		PluginRegistryModel result = factory.createPluginRegistry();
-		for (int i = 0; i < pluginPath.length; i++)
-			processPluginPathEntry(result, pluginPath[i]);
-		return result;
-	}
-
-	private void processPluginPathEntry(PluginRegistryModel registry, URL location) {
-		if (debug)
-			debug("Path - " + location); //$NON-NLS-1$
-		if (location.getFile().endsWith("/")) { //$NON-NLS-1$
-			// directory entry - search for plugins
-			String[] members = getPathMembers(location);
-			for (int j = 0; j < members.length; j++) {
-				boolean found = false;
-				try {
-					found = processPluginPathFile(registry, new URL(location, members[j] + "/plugin.xml")); //$NON-NLS-1$
-					if (!found)
-						found = processPluginPathFile(registry, new URL(location, members[j] + "/fragment.xml")); //$NON-NLS-1$
-				} catch (MalformedURLException e) {
-					// Skip bad URLs
-				}
-				if (debug)
-					debug(found ? "Processed - " : "Processed (not found) - " + members[j]); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		} else {
-			// specific file entry - load the given file
-			boolean found = processPluginPathFile(registry, location);
-			if (debug)
-				debug(found ? "Processed - " : "Processed (not found) - " + location); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-	}
-
-	/**
-	 * @return true if a file was found at the given location, and false otherwise.
-	 */
-	private boolean processPluginPathFile(PluginRegistryModel registry, URL location) {
-		PluginModel entry = processManifestFile(location);
-		if (entry == null)
-			return false;
-		// Make sure all the required fields are here.
-		// This prevents us from things like NullPointerExceptions
-		// when we are assuming a field exists.
-		if (!requiredPluginModel(entry, location)) {
-			entry = null;
-			return false;
-		}
-		entry.setVersion(getQualifiedVersion(entry, location)); // check for version qualifier
-		if (entry instanceof PluginDescriptorModel) {
-			if (entry.getId() == null || entry.getVersion() == null) {
-				return parseProblem(NLS.bind(Messages.parse_nullPluginIdentifier, location));
-			}
-			//skip duplicate entries
-			if (registry.getPlugin(entry.getId(), entry.getVersion()) != null) {
-				return parseProblem(NLS.bind(Messages.parse_duplicatePlugin, entry.getId(), location));
-			}
-			registry.addPlugin((PluginDescriptorModel) entry);
-		} else {
-			if (entry.getId() == null || entry.getVersion() == null) {
-				return parseProblem(NLS.bind(Messages.parse_nullFragmentIdentifier, location));
-			}
-			if (entry instanceof PluginFragmentModel) {
-				registry.addFragment((PluginFragmentModel) entry);
-			} else {
-				return parseProblem(NLS.bind(Messages.parse_unknownEntry, location));
-			}
-		}
-		String url = location.toString();
-		url = url.substring(0, 1 + url.lastIndexOf('/'));
-		entry.setRegistry(registry);
-		entry.setLocation(url);
-		// this is for the registry cache
-		// InternalPlatform.addLastModifiedTime(location.getFile(), new File(location.getFile()).lastModified());
-		return true;
-	}
-
-	private String getQualifiedVersion(PluginModel entry, URL base) {
-		if (entry == null || entry.getVersion() == null || entry.getId() == null)
-			return null;
-
-		InputStream is = null;
-		try {
-			// check to see if we have buildmanifest.properties for this plugin
-			URL manifest = null;
-			manifest = new URL(base, "buildmanifest.properties"); //$NON-NLS-1$
-			Properties props = new Properties();
-			is = manifest.openStream();
-			props.load(is);
-
-			// lookup qualifier for this plugin and "morph" the identifier if needed
-			String key = "plugin@" + entry.getId(); //$NON-NLS-1$
-			String qualifier = props.getProperty(key);
-			if (qualifier == null)
-				return entry.getVersion();
-			PluginVersionIdentifier v = new PluginVersionIdentifier(entry.getVersion());
-			if (!v.getQualifierComponent().equals("")) //$NON-NLS-1$
-				return entry.getVersion();
-			else
-				return (new PluginVersionIdentifier(v.getMajorComponent(), v.getMinorComponent(), v.getServiceComponent(), qualifier)).toString();
-		} catch (Exception e) {
-			return entry.getVersion();
-		} finally {
-			if (is != null)
-				try {
-					is.close();
-				} catch (IOException e) {
-					// Don't throw anything back if the close fails
-				}
-		}
-	}
-
-	private boolean requiredPluginModel(PluginModel plugin, URL location) {
-		String name = plugin.getName();
-		String id = plugin.getId();
-		String version = plugin.getVersion();
-		int nameLength = name == null ? 0 : name.length();
-		int idLength = id == null ? 0 : id.length();
-		int versionLength = version == null ? 0 : version.length();
-
-		if (nameLength <= 0) {
-			parseProblem(NLS.bind(Messages.parse_missingPluginName, location));
-			return false;
-		}
-		if (idLength <= 0) {
-			parseProblem(NLS.bind(Messages.parse_missingPluginId, location));
-			return false;
-		}
-		if (versionLength <= 0) {
-			parseProblem(NLS.bind(Messages.parse_missingPluginVersion, location));
-			return false;
-		}
-
-		if (plugin instanceof PluginFragmentModel) {
-			String pluginName = ((PluginFragmentModel) plugin).getPlugin();
-			String pluginVersion = ((PluginFragmentModel) plugin).getPluginVersion();
-			int pNameLength = pluginName == null ? 0 : pluginName.length();
-			int pNameVersion = pluginVersion == null ? 0 : pluginVersion.length();
-			if (pNameLength <= 0) {
-				parseProblem(NLS.bind(Messages.parse_missingFPName, location));
-				return false;
-			}
-			if (pNameVersion <= 0) {
-				parseProblem(NLS.bind(Messages.parse_missingFPVersion, location));
-				return false;
-			}
-		}
-		return true;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/internal/model/RegistryResolver.java b/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/internal/model/RegistryResolver.java
deleted file mode 100644
index 97ca87d..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/internal/model/RegistryResolver.java
+++ /dev/null
@@ -1,1357 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.core.internal.model;
-
-import java.util.*;
-import org.eclipse.core.internal.runtime.InternalPlatform;
-import org.eclipse.core.internal.runtime.Messages;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.model.*;
-import org.eclipse.osgi.util.NLS;
-
-public class RegistryResolver {
-
-	private Map idmap;
-	private PluginRegistryModel reg;
-	private MultiStatus status;
-	private boolean trimPlugins = true;
-	private boolean crossLink = true;
-
-	private boolean DEBUG_RESOLVE = false;
-	private static final String OPTION_DEBUG_RESOLVE = "org.eclipse.core.runtime/registry/debug/resolve"; //$NON-NLS-1$
-
-	// constraint entry
-	// A constraint is made for each relationship where 'parent' requires 'prq'.
-	// ver is the version number we must try to match.  It can be null if we just
-	// want to match the latest.
-	// cEntry points to the parent ConstraintsEntry element.
-	private class Constraint {
-		private PluginDescriptorModel parent;
-		private PluginPrerequisiteModel prq;
-		private PluginVersionIdentifier ver;
-		private byte type = PluginPrerequisiteModel.PREREQ_MATCH_UNSPECIFIED;
-		private ConstraintsEntry cEntry = null;
-
-		private Constraint(PluginDescriptorModel parent, PluginPrerequisiteModel prq) {
-			this.parent = parent;
-			this.prq = prq;
-			if (prq != null) {
-				ver = RegistryResolver.this.getVersionIdentifier(prq);
-				type = prq.getMatchByte();
-				if ((ver != null) && (type == PluginPrerequisiteModel.PREREQ_MATCH_UNSPECIFIED))
-					type = PluginPrerequisiteModel.PREREQ_MATCH_COMPATIBLE;
-			}
-		}
-
-		private int getMatchType() {
-			return type;
-		}
-
-		private ConstraintsEntry getConstraintsEntry() {
-			return cEntry;
-		}
-
-		private void setConstraintsEntry(ConstraintsEntry entry) {
-			cEntry = entry;
-		}
-
-		private PluginDescriptorModel getParent() {
-			return parent;
-		}
-
-		private PluginPrerequisiteModel getPrerequisite() {
-			return prq;
-		}
-
-		private PluginVersionIdentifier getVersionIdentifier() {
-			return ver;
-		}
-
-		public String toString() {
-			if (prq == null)
-				return "(null)"; //$NON-NLS-1$
-			String s = parent.toString() + "->" + prq.getPlugin(); //$NON-NLS-1$
-			switch (prq.getMatchByte()) {
-				case PluginPrerequisiteModel.PREREQ_MATCH_UNSPECIFIED :
-					s += "(any)"; //$NON-NLS-1$
-					break;
-				case PluginPrerequisiteModel.PREREQ_MATCH_PERFECT :
-					s += IModel.PLUGIN_REQUIRES_MATCH_PERFECT;
-					break;
-				case PluginPrerequisiteModel.PREREQ_MATCH_EQUIVALENT :
-					s += IModel.PLUGIN_REQUIRES_MATCH_EQUIVALENT;
-					break;
-				case PluginPrerequisiteModel.PREREQ_MATCH_COMPATIBLE :
-					s += IModel.PLUGIN_REQUIRES_MATCH_COMPATIBLE;
-					break;
-				case PluginPrerequisiteModel.PREREQ_MATCH_GREATER_OR_EQUAL :
-					s += IModel.PLUGIN_REQUIRES_MATCH_GREATER_OR_EQUAL;
-					break;
-			}
-			return s;
-		}
-	}
-
-	// constraint index structure
-	// Each time an IndexEntry is created, a single ContraintsEntry
-	// is created and put into the IndexEntry's concurrentList.
-	// Note that the new ConstraintsEntry will always point
-	// back to the IndexEntry it is associated with (parent).
-	// A ConstraintsEntry holds a group of constraints that can be
-	// resolved, without conflict for a particular plugin id.  The
-	// constraints are all of the form where another plugin id 
-	// requires some version of this plugin id as a prerequisite.
-	private class ConstraintsEntry {
-		private IndexEntry parent;
-		private List constraintList = new LinkedList();
-		// lastResolved doesn't seem to be used.  Is it designed to
-		// eliminate the numerous calls to find a matching plugin 
-		// descriptor?  Calls to find a matching plugin descriptor
-		// iterate through each version of this plugin and each 
-		// constraint in each ConstraintsEntry.
-		private PluginDescriptorModel lastResolved = null;
-		private boolean isResolved = false;
-		private PluginDescriptorModel bestMatch = null;
-		private boolean bestMatchEnabled = false;
-
-		private ConstraintsEntry(IndexEntry parent) {
-			// Create a new ConstraintsEntry and point 'parent'
-			// back to the associated IndexEntry
-			this.parent = parent;
-		}
-
-		private int constraintCount() {
-			// Returns the number of Constraint entries in
-			// constraintList.  Initially this will be 0.
-			return constraintList.size();
-		}
-
-		private PluginDescriptorModel addConstraint(Constraint c) {
-			// Add this Constraint to the list of constraints 
-			// for this ConstraintsEntry.  Note that while a
-			// given ConstraintsEntry can have many Constraints,
-			// any Constraint can have only one ConstraintsEntry.
-			// This method will return a single plugin descriptor which
-			// is the most recent descriptor which satisfies this 
-			// constraint.
-			constraintList.add(c);
-			c.setConstraintsEntry(this);
-			// get all of the plugin descriptors which satisfy this 
-			// constraint and all other constraints in this ConstraintsEntry
-			List constrained = getMatchingDescriptors();
-			if (constrained.size() <= 0) {
-				// looks like we have a conflict
-				constraintList.remove(c);
-				c.setConstraintsEntry(null);
-				return null;
-			} else {
-				// match will be only the latest version plugin which 
-				// satisfies these constraints
-				PluginDescriptorModel match = (PluginDescriptorModel) constrained.get(0);
-				if (!match.equals(lastResolved)) {
-					lastResolved = match;
-					isResolved = false;
-				}
-				return match;
-			}
-		}
-
-		private void removeConstraint(Constraint c) {
-			if (DEBUG_RESOLVE)
-				debug("removing constraint " + c.toString()); //$NON-NLS-1$
-			constraintList.remove(c);
-			c.setConstraintsEntry(null);
-			lastResolved = null;
-			isResolved = false;
-		}
-
-		private void removeConstraintFor(PluginPrerequisiteModel prereq) {
-			List remove = new ArrayList();
-			for (Iterator list = constraintList.iterator(); list.hasNext();) {
-				Constraint c = (Constraint) list.next();
-				if (c.getPrerequisite() == prereq)
-					remove.add(c);
-			}
-			for (Iterator list = remove.iterator(); list.hasNext();)
-				removeConstraint((Constraint) list.next());
-		}
-
-		private PluginDescriptorModel getMatchingDescriptor() {
-			// We do this a lot. Can we use some mechanism to 
-			// hold the last matching descriptor and discard
-			// it if the constraints change?
-			List constrained = getMatchingDescriptors();
-			if (constrained.size() <= 0)
-				return null;
-			else
-				return (PluginDescriptorModel) constrained.get(0);
-		}
-
-		private List getMatchingDescriptors() {
-			// The object of the game here is to return a list of plugin
-			// descriptors that match the list of Constraint elements
-			// hanging off this ConstraintsEntry.
-
-			// constrained will be a list of matching plugin descriptors
-			List constrained = new LinkedList();
-
-			for (Iterator list = parent.versions().iterator(); list.hasNext();) {
-				// parent is an IndexEntry and versions is a list of all the 
-				// plugin descriptors, in version order (biggest to smallest),
-				// that have this plugin id.
-				PluginDescriptorModel pd = (PluginDescriptorModel) list.next();
-				if (pd.getEnabled())
-					constrained.add(pd);
-			}
-			// constrained now contains all of the enabled plugin descriptors for
-			// this IndexEntry.  The next step is to remove any that don't fit.
-
-			for (Iterator list = constraintList.iterator(); list.hasNext();) {
-				// For each Constraint, go through all of the versions of this plugin
-				// and remove any from 'constrained' which don't match the criteria
-				// for this Constraint.
-
-				// constraintList is all the Constraint entries for this ConstraintsEntry.
-				Constraint c = (Constraint) list.next();
-				if (c.getMatchType() == PluginPrerequisiteModel.PREREQ_MATCH_UNSPECIFIED)
-					continue;
-				for (Iterator list2 = parent.versions().iterator(); list2.hasNext();) {
-					PluginDescriptorModel pd = (PluginDescriptorModel) list2.next();
-					if (!pd.getEnabled())
-						// ignore disabled plugins
-						continue;
-					switch (c.getMatchType()) {
-						case PluginPrerequisiteModel.PREREQ_MATCH_PERFECT :
-							if (!getVersionIdentifier(pd).isPerfect(c.getVersionIdentifier()))
-								constrained.remove(pd);
-							break;
-						case PluginPrerequisiteModel.PREREQ_MATCH_EQUIVALENT :
-							if (!getVersionIdentifier(pd).isEquivalentTo(c.getVersionIdentifier()))
-								constrained.remove(pd);
-							break;
-						case PluginPrerequisiteModel.PREREQ_MATCH_COMPATIBLE :
-							if (!getVersionIdentifier(pd).isCompatibleWith(c.getVersionIdentifier()))
-								constrained.remove(pd);
-							break;
-						case PluginPrerequisiteModel.PREREQ_MATCH_GREATER_OR_EQUAL :
-							if (!getVersionIdentifier(pd).isGreaterOrEqualTo(c.getVersionIdentifier()))
-								constrained.remove(pd);
-							break;
-					}
-				}
-			}
-
-			// At this point, constrained will contain only those plugin descriptors which
-			// satisfy ALL of the Constraint entries.
-
-			return constrained;
-		}
-
-		private void preresolve(List roots) {
-			// All of the constraints that need to be added, have been.  Now just
-			// pick the plugin descriptor that is a best fit for all of these
-			// constraints.  Root nodes will not have any constraints (since nothing
-			// requires this plugin as a prerequisite, by definition).  For root
-			// node, just pick up the latest version.
-
-			if (constraintList.size() <= 0) {
-				// This should be a root descriptor.  So, just pick up the latest
-				// version of the root.
-				if (roots.contains(parent.getId())) {
-					bestMatch = (PluginDescriptorModel) parent.versions().get(0);
-					if (bestMatch == null) {
-						if (DEBUG_RESOLVE)
-							debug("*ERROR* no resolved descriptor for " + parent.getId()); //$NON-NLS-1$
-					} else
-						bestMatchEnabled = bestMatch.getEnabled();
-				}
-			} else {
-				// If this isn't a root descriptor, get the latest version of the
-				// plugin descriptor which matches all the constraints we have.
-				// Pick the plugin that best matches all the constraints.  Any
-				// allowable conflicts will be in another ConstraintsEntry.
-				bestMatch = getMatchingDescriptor();
-				if (bestMatch == null) {
-					if (DEBUG_RESOLVE)
-						debug("*ERROR* no resolved descriptor for " + parent.getId()); //$NON-NLS-1$
-				} else
-					bestMatchEnabled = true;
-			}
-		}
-
-		private void resolve() {
-			// Assumptions:  All constraints that need to be added, have been.
-			//		- preresolve (above) has been called and a bestMatch (if it 
-			//		exists) has been identified
-			//		- all versions of this plugin have been disabled (so it is
-			//		up to this method to enable the plugin that is a bestMatch
-			//		for all of the constraints in this ConstraintsEntry).
-			if (bestMatch != null) {
-				// All of the versions of this plugin will have been disabled.
-				// Enable only the one which is the best match.
-				// bestMatchEnabled will be set to false if this particular plugin
-				// caused an unresolvable conflict.  Therefore, setEnabled(bestMatchEnabled)
-				// will leave this delinquent plugin disabled.
-				bestMatch.setEnabled(bestMatchEnabled);
-				if (bestMatchEnabled) {
-					if (DEBUG_RESOLVE)
-						debug("configured " + bestMatch.toString()); //$NON-NLS-1$
-					if (constraintList.size() > 0) {
-						for (int i = 0; i < constraintList.size(); i++) {
-							// Put which actual version this prerequisite resolved to in the
-							// relevant prerequisite in the registry.
-							PluginPrerequisiteModel prq = (PluginPrerequisiteModel) ((Constraint) constraintList.get(i)).getPrerequisite();
-							prq.setResolvedVersion(getVersionIdentifier(bestMatch).toString());
-						}
-					}
-				}
-			}
-		}
-
-		private boolean isResolved() {
-			return this.isResolved;
-		}
-
-		private void isResolved(boolean isResolved) {
-			this.isResolved = isResolved;
-		}
-	}
-
-	// plugin descriptor index structure
-	// There is exactly one IndexEntry for each plugin id.
-	// The actual plugin descriptor is an element of verList.
-	// Multiple versions of this plugin id are found in verList
-	// and are ordered from the highest version number (assumed
-	// to be the most recent) to the lowest version number.
-	// concurrentList contains a list of ConstraintsEntry's which
-	// group constraints together into non-conflicting groups.
-	private class IndexEntry {
-		private String id;
-		private List verList = new LinkedList();
-		private List concurrentList = new ArrayList();
-
-		private IndexEntry(String id) {
-			this.id = id;
-			// Create the first ConstraintsEntry with no constraints
-			concurrentList.add(new ConstraintsEntry(this));
-		}
-
-		private String getId() {
-			return id;
-		}
-
-		private ConstraintsEntry getConstraintsEntryFor(Constraint c) {
-			// Each Constraint must have exactly one ConstraintsEntry but
-			// a ConstraintsEntry may have many (non-conflicting) Constraints.
-			ConstraintsEntry ce = c.getConstraintsEntry();
-			if (ce != null)
-				return ce;
-			ce = (ConstraintsEntry) concurrentList.get(0);
-			if (c.getPrerequisite() == null)
-				c.setConstraintsEntry(ce);
-			return ce;
-		}
-
-		private PluginDescriptorModel addConstraint(Constraint c) {
-			int concurrentCount = concurrentList.size();
-
-			// try to find constraits entry that can accommodate new constraint
-			for (Iterator list = concurrentList.iterator(); list.hasNext();) {
-				ConstraintsEntry cie = (ConstraintsEntry) list.next();
-				PluginDescriptorModel pd = cie.addConstraint(c);
-				// If pd comes back null, adding this constraint to the
-				// ConstraintsEntry cie will cause a conflict (no plugin
-				// descriptor can satisfy all the constraints).
-				if (pd != null) {
-
-					// constraint added OK and no concurrency
-					if (concurrentCount <= 1)
-						return pd;
-
-					// constraint added OK but have concurrency
-					if (allowConcurrencyFor(pd))
-						return pd;
-					else {
-						cie.removeConstraint(c); // cannot be concurrent
-						return null;
-					}
-				}
-			}
-
-			// If we get to this point, the constraint we are trying to add
-			// gave us no matching plugins when used in conjunction with the
-			// other constraints in a particular ConstraintsEntry.  Add a
-			// new ConstraintsEntry and put this constraint in it (only if
-			// concurrency is allowed).  Concurrency is allowed only if the
-			// plugin we find which matches this constraint has no extensions
-			// or extension points.
-
-			// attempt to create new constraints entry
-			ConstraintsEntry cie;
-			PluginDescriptorModel pd;
-
-			if (concurrentList.size() == 1) {
-				// ensure base entry allows concurrency
-				cie = (ConstraintsEntry) concurrentList.get(0);
-				pd = cie.getMatchingDescriptor();
-				if (!allowConcurrencyFor(pd))
-					return null;
-			}
-
-			cie = new ConstraintsEntry(this);
-			pd = cie.addConstraint(c);
-			if (pd == null) {
-				cie.removeConstraint(c); // no matching target
-				return null;
-			}
-			if (!allowConcurrencyFor(pd)) {
-				cie.removeConstraint(c); // cannot be concurrent
-				return null;
-			}
-			if (DEBUG_RESOLVE)
-				debug("creating new constraints list in " + id + " for " + c.toString()); //$NON-NLS-1$ //$NON-NLS-2$
-			concurrentList.add(cie);
-			return pd;
-		}
-
-		private boolean allowConcurrencyFor(PluginDescriptorModel pd) {
-			if (pd == null)
-				return false;
-			if (pd.getDeclaredExtensions() != null && pd.getDeclaredExtensions().length > 0)
-				return false;
-			if (pd.getDeclaredExtensionPoints() != null && pd.getDeclaredExtensionPoints().length > 0)
-				return false;
-			return true;
-		}
-
-		private void removeConstraintFor(PluginPrerequisiteModel prereq) {
-			for (Iterator list = concurrentList.iterator(); list.hasNext();)
-				((ConstraintsEntry) list.next()).removeConstraintFor(prereq);
-		}
-
-		private PluginDescriptorModel getMatchingDescriptorFor(Constraint c) {
-			ConstraintsEntry cie = getConstraintsEntryFor(c);
-			return cie.getMatchingDescriptor();
-		}
-
-		private void disableAllDescriptors() {
-			for (Iterator list = verList.iterator(); list.hasNext();) {
-				PluginDescriptorModel pd = (PluginDescriptorModel) list.next();
-				pd.setEnabled(false);
-			}
-		}
-
-		private void resolveDependencies(List roots) {
-			// preresolved will pick out the plugin which has the highest version
-			// number and satisfies all the constraints.  This is then put in
-			// bestMatch field of the ConstraintsEntry.
-			for (Iterator list = concurrentList.iterator(); list.hasNext();)
-				((ConstraintsEntry) list.next()).preresolve(roots);
-			// Now all versions of this plugin are disabled.
-			disableAllDescriptors();
-			// Now, find the best match (from preresolve above) and enable it.
-			// Be sure to update any prerequisite entries with the version number
-			// of the plugin we are actually using.
-			for (Iterator list = concurrentList.iterator(); list.hasNext();)
-				((ConstraintsEntry) list.next()).resolve();
-		}
-
-		/**
-		 * A root plug-in does not have any constraints attached to it.
-		 */
-		private boolean isRoot() {
-			if (concurrentList.size() != 1)
-				return false;
-			ConstraintsEntry constraintsEntry = (ConstraintsEntry) concurrentList.get(0);
-			return constraintsEntry.constraintCount() == 0;
-		}
-
-		private List versions() {
-			return verList;
-		}
-
-		private boolean isResolvedFor(Constraint c) {
-			ConstraintsEntry cie = getConstraintsEntryFor(c);
-			return cie.isResolved();
-		}
-
-		private void isResolvedFor(Constraint c, boolean value) {
-			ConstraintsEntry cie = getConstraintsEntryFor(c);
-			cie.isResolved(value);
-		}
-
-	}
-
-	// subtree resolution "cookie" (composite change list)
-	private class Cookie {
-		private boolean ok = true;
-		private List changes = new ArrayList(); // a list of Constraints
-
-		private Cookie() {
-		}
-
-		private boolean addChange(Constraint c) {
-			// Keep a list of all constraints so that
-			//	- we can spot circular dependencies
-			//	- we can clean up if there is an unresolvable conflict
-			PluginPrerequisiteModel prereq = c.getPrerequisite();
-			for (Iterator list = changes.iterator(); list.hasNext();)
-				if (prereq == ((Constraint) list.next()).getPrerequisite())
-					// We have a circular dependency
-					return false;
-			changes.add(c);
-			return true;
-		}
-
-		private List getChanges() {
-			return changes;
-		}
-
-		private boolean isOk() {
-			return ok;
-		}
-
-		private void isOk(boolean value) {
-			ok = value;
-		}
-	}
-
-	public RegistryResolver() {
-		String debug = Platform.getDebugOption(OPTION_DEBUG_RESOLVE);
-		DEBUG_RESOLVE = debug == null ? false : (debug.equalsIgnoreCase("true") ? true : false); //$NON-NLS-1$
-	}
-
-	private void add(PluginDescriptorModel pd) {
-
-		String key = pd.getId();
-		List verList;
-		IndexEntry ix = (IndexEntry) idmap.get(key);
-
-		// create new index entry if one does not exist for plugin
-		if (ix == null) {
-			ix = new IndexEntry(key);
-			idmap.put(key, ix);
-		}
-
-		// insert plugin into list maintaining version order
-		verList = ix.versions();
-		int i = 0;
-		for (i = 0; i < verList.size(); i++) {
-			PluginDescriptorModel element = (PluginDescriptorModel) verList.get(i);
-			if (getVersionIdentifier(pd).equals(getVersionIdentifier(element)))
-				return; // ignore duplicates
-			if (getVersionIdentifier(pd).isGreaterThan(getVersionIdentifier(element)))
-				break;
-		}
-		verList.add(i, pd);
-	}
-
-	private void addExtensions(ExtensionModel[] extensions, PluginDescriptorModel plugin) {
-		// Add all the extensions (presumably from a fragment) to plugin
-		int extLength = extensions.length;
-		for (int i = 0; i < extLength; i++) {
-			extensions[i].setParentPluginDescriptor(plugin);
-		}
-		ExtensionModel[] list = plugin.getDeclaredExtensions();
-		int listLength = (list == null ? 0 : list.length);
-		ExtensionModel[] result = null;
-		if (list == null)
-			result = new ExtensionModel[extLength];
-		else {
-			result = new ExtensionModel[list.length + extLength];
-			System.arraycopy(list, 0, result, 0, list.length);
-		}
-		System.arraycopy(extensions, 0, result, listLength, extLength);
-		plugin.setDeclaredExtensions(result);
-	}
-
-	private void addExtensionPoints(ExtensionPointModel[] extensionPoints, PluginDescriptorModel plugin) {
-		// Add all the extension points (presumably from a fragment) to plugin
-		int extPtLength = extensionPoints.length;
-		for (int i = 0; i < extPtLength; i++) {
-			extensionPoints[i].setParentPluginDescriptor(plugin);
-		}
-		ExtensionPointModel[] list = plugin.getDeclaredExtensionPoints();
-		int listLength = (list == null ? 0 : list.length);
-		ExtensionPointModel[] result = null;
-		if (list == null)
-			result = new ExtensionPointModel[extPtLength];
-		else {
-			result = new ExtensionPointModel[list.length + extPtLength];
-			System.arraycopy(list, 0, result, 0, list.length);
-		}
-		System.arraycopy(extensionPoints, 0, result, listLength, extPtLength);
-		plugin.setDeclaredExtensionPoints(result);
-	}
-
-	private void addLibraries(LibraryModel[] libraries, PluginDescriptorModel plugin) {
-		// Add all the libraries (presumably from a fragment) to plugin
-		int libLength = libraries.length;
-		LibraryModel[] list = plugin.getRuntime();
-		LibraryModel[] result = null;
-		int listLength = (list == null ? 0 : list.length);
-		if (list == null)
-			result = new LibraryModel[libLength];
-		else {
-			result = new LibraryModel[list.length + libLength];
-			System.arraycopy(list, 0, result, 0, list.length);
-		}
-		System.arraycopy(libraries, 0, result, listLength, libLength);
-		plugin.setRuntime(result);
-	}
-
-	private void addPrerequisites(PluginPrerequisiteModel[] prerequisites, PluginDescriptorModel plugin) {
-		// Add all the prerequisites (presumably from a fragment) to plugin
-		int reqLength = prerequisites.length;
-		PluginPrerequisiteModel[] list = plugin.getRequires();
-		PluginPrerequisiteModel[] result = null;
-		int listLength = (list == null ? 0 : list.length);
-		if (list == null)
-			result = new PluginPrerequisiteModel[reqLength];
-		else {
-			result = new PluginPrerequisiteModel[list.length + reqLength];
-			System.arraycopy(list, 0, result, 0, list.length);
-		}
-		System.arraycopy(prerequisites, 0, result, listLength, reqLength);
-		plugin.setRequires(result);
-	}
-
-	private void debug(String s) {
-		System.out.println("Registry Resolve: " + s); //$NON-NLS-1$
-	}
-
-	private void error(String message) {
-		Status error = new Status(IStatus.WARNING, Platform.PI_RUNTIME, Platform.PARSE_PROBLEM, message, null);
-		status.add(error);
-		if (InternalPlatform.DEBUG && DEBUG_RESOLVE)
-			System.out.println(error.toString());
-	}
-
-	private void information(String message) {
-		if (InternalPlatform.DEBUG && DEBUG_RESOLVE)
-			System.out.println(message);
-	}
-
-	public IExtensionPoint getExtensionPoint(PluginDescriptorModel plugin, String extensionPointId) {
-		if (extensionPointId == null)
-			return null;
-		ExtensionPointModel[] list = plugin.getDeclaredExtensionPoints();
-		if (list == null)
-			return null;
-		for (int i = 0; i < list.length; i++) {
-			if (extensionPointId.equals(list[i].getId()))
-				return (IExtensionPoint) list[i];
-		}
-		return null;
-	}
-
-	private PluginVersionIdentifier getVersionIdentifier(PluginModel model) {
-		try {
-			return new PluginVersionIdentifier(model.getVersion());
-		} catch (RuntimeException e) {
-			// if the version is invalid, an AssertionFailedException (not visible here) will be thrown
-			if (this.DEBUG_RESOLVE)
-				// only show if we are debugging
-				e.printStackTrace(System.out);
-			// Hopefully, we will never get here.  The version number
-			// has already been successfully converted from a string to
-			// a PluginVersionIdentifier and back to a string.  But keep
-			// this catch around in case something does go wrong.
-			return new PluginVersionIdentifier(0, 0, 0);
-		}
-	}
-
-	private PluginVersionIdentifier getVersionIdentifier(PluginPrerequisiteModel prereq) {
-		String version = prereq.getVersion();
-		return version == null ? null : new PluginVersionIdentifier(version);
-	}
-
-	private boolean fragmentHasPrerequisites(PluginFragmentModel fragment) {
-		PluginPrerequisiteModel[] requires = fragment.getRequires();
-		if (requires == null || requires.length == 0)
-			return true;
-		for (int i = 0; i < requires.length; i++) {
-			// Use the idmap to determine if a plugin exists.  We know
-			// that all plugins in this registry already have an entry
-			// in the idmap.  If the right idmap entry doesn't exist,
-			// this plugin is not in the registry.
-			if (idmap.get(requires[i].getPlugin()) == null) {
-				// We know this plugin doesn't exist
-				error(NLS.bind(Messages.parse_badPrereqOnFrag, fragment.getName(), requires[i].getPlugin()));
-				return false;
-			}
-		}
-		return true;
-	}
-
-	private void linkFragments() {
-		/* For each fragment, find out which plugin descriptor it belongs
-		 * to and add it to the list of fragments in this plugin.
-		 */
-		PluginFragmentModel[] fragments = reg.getFragments();
-		for (int i = 0; i < fragments.length; i++) {
-			PluginFragmentModel fragment = fragments[i];
-			if (!requiredFragment(fragment)) {
-				// There is a required field missing on this fragment, so 
-				// ignore it.
-				String id, name;
-				if ((id = fragment.getId()) != null)
-					error(NLS.bind(Messages.parse_fragmentMissingAttr, id));
-				else if ((name = fragment.getName()) != null)
-					error(NLS.bind(Messages.parse_fragmentMissingAttr, name));
-				else
-					error(Messages.parse_fragmentMissingIdName);
-				continue;
-			}
-			if (!fragmentHasPrerequisites(fragment)) {
-				// This fragment requires a plugin that does not 
-				// exist.  Ignore the fragment.
-				continue;
-			}
-
-			// Now find a plugin that fits the matching criteria specified for this fragment and
-			// its related plugin
-			PluginDescriptorModel plugin = null;
-			IndexEntry ix = (IndexEntry) idmap.get(fragment.getPluginId());
-			byte matchType = fragment.getMatch();
-			if (ix != null) {
-				for (Iterator list = ix.versions().iterator(); list.hasNext() && plugin == null;) {
-					PluginDescriptorModel pd = (PluginDescriptorModel) list.next();
-					if (pd.getEnabled()) {
-						// return the highest version that fits the matching criteria
-						switch (matchType) {
-							case PluginFragmentModel.FRAGMENT_MATCH_PERFECT :
-								if (getVersionIdentifier(pd).isPerfect(new PluginVersionIdentifier(fragment.getPluginVersion())))
-									plugin = pd;
-								break;
-							case PluginFragmentModel.FRAGMENT_MATCH_EQUIVALENT :
-								if (getVersionIdentifier(pd).isEquivalentTo(new PluginVersionIdentifier(fragment.getPluginVersion())))
-									plugin = pd;
-								break;
-							case PluginFragmentModel.FRAGMENT_MATCH_COMPATIBLE :
-							case PluginFragmentModel.FRAGMENT_MATCH_UNSPECIFIED :
-								if (getVersionIdentifier(pd).isCompatibleWith(new PluginVersionIdentifier(fragment.getPluginVersion())))
-									plugin = pd;
-								break;
-							case PluginFragmentModel.FRAGMENT_MATCH_GREATER_OR_EQUAL :
-								if (getVersionIdentifier(pd).isGreaterOrEqualTo(new PluginVersionIdentifier(fragment.getPluginVersion())))
-									plugin = pd;
-								break;
-						}
-					}
-				}
-			}
-
-			if (plugin == null) {
-				// We couldn't find this fragment's plugin
-				error(NLS.bind(Messages.parse_missingFragmentPd, fragment.getPluginId(), fragment.getId()));
-				continue;
-			}
-
-			// Add this fragment to the list of fragments for this plugin descriptor
-			PluginFragmentModel[] list = plugin.getFragments();
-			PluginFragmentModel[] newList;
-			if (list == null) {
-				newList = new PluginFragmentModel[1];
-				newList[0] = fragment;
-			} else {
-				newList = new PluginFragmentModel[list.length + 1];
-				System.arraycopy(list, 0, newList, 0, list.length);
-				newList[list.length] = fragment;
-			}
-			plugin.setFragments(newList);
-		}
-	}
-
-	private void removeConstraintFor(PluginPrerequisiteModel prereq) {
-
-		String id = prereq.getPlugin();
-		IndexEntry ix = (IndexEntry) idmap.get(id);
-		if (ix == null) {
-			if (DEBUG_RESOLVE)
-				debug("unable to locate index entry for " + id); //$NON-NLS-1$
-			return;
-		}
-		ix.removeConstraintFor(prereq);
-	}
-
-	private void resolve() {
-
-		// Start by putting each plugin in the idmap.  We are
-		// going to need this for the call to linkFragments.
-		PluginDescriptorModel[] pluginList = reg.getPlugins();
-		idmap = new HashMap();
-		for (int i = 0; i < pluginList.length; i++) {
-			// Check to see if all the required fields exist now.
-			// For example, if we have a null plugin version identifier,
-			// the add(pluginList[i]) will give a null pointer
-			// exception.
-			if (!requiredPluginDescriptor(pluginList[i])) {
-				pluginList[i].setEnabled(false);
-				String id, name;
-				if ((id = pluginList[i].getId()) != null)
-					error(NLS.bind(Messages.parse_pluginMissingAttr, id));
-				else if ((name = pluginList[i].getName()) != null)
-					error(NLS.bind(Messages.parse_pluginMissingAttr, name));
-				else
-					error(Messages.parse_pluginMissingIdName);
-				continue;
-			}
-			add(pluginList[i]);
-		}
-		// Add all the fragments to their associated plugin.
-		// Note that this will check for all the required fields in
-		// the fragment.
-		linkFragments();
-		// Now we have to cycle through the plugin list again
-		// to assimilate all the fragment information and 
-		// check for 'required' fields.
-		for (int i = 0; i < pluginList.length; i++) {
-			if (pluginList[i].getFragments() != null) {
-				// Take all the information in each fragment and
-				// embed it in the plugin descriptor
-				resolvePluginFragments(pluginList[i]);
-			}
-		}
-
-		// resolve root descriptors
-		List roots = resolveRootDescriptors();
-
-		if (roots.size() == 0) {
-			// No roots, likely due to a circular dependency
-			// (or multiple circular dependencies).  Disable
-			// all plugins before returning.  Remember to trim
-			// the registry if needed.
-			PluginDescriptorModel[] plugins = reg.getPlugins();
-			for (int i = 0; i < plugins.length; i++) {
-				plugins[i].setEnabled(false);
-			}
-			resolvePluginRegistry();
-			idmap = null;
-			reg = null;
-			error(Messages.plugin_unableToResolve);
-			return;
-		}
-
-		// roots is a list of those plugin ids that are not a
-		// prerequisite for any other plugin.  Note that roots
-		// contains ids only.
-
-		// process all root nodes (first those previously on roots list, then those on the orphans set) 
-		// The orphans of an iteration will become the roots of the next one.	
-		for (Set orphans, rootsSet = new HashSet(roots); !rootsSet.isEmpty(); rootsSet = orphans) {
-			orphans = new HashSet();
-			// walk the dependencies and setup constraints	
-			for (Iterator rootsIter = rootsSet.iterator(); rootsIter.hasNext();) {
-				String rootID = (String) rootsIter.next();
-				resolveNode(rootID, null, null, null, orphans);
-				// At this point we have set up all the Constraint and
-				// ConstraintsEntry components.  But we may not have found which
-				// plugin is the best match for a given set of constraints.
-			}
-			// build the roots set for the next iteration
-			for (Iterator orphansIter = orphans.iterator(); orphansIter.hasNext();) {
-				IndexEntry orphan = (IndexEntry) idmap.get(orphansIter.next());
-				// only after a complete iteration over the roots set we can decide if 
-				// a potential orphan is a real orphan
-				// Now we need to resolve for these new roots (they may
-				// not have been resolved before, especially if the parent
-				// was looking for an older version and not the latest
-				// version which is what we pick up for the roots).					
-				if (orphan.isRoot()) {
-					if (DEBUG_RESOLVE)
-						debug("orphan " + orphan.getId()); //$NON-NLS-1$				
-					roots.add(orphan.getId());
-				} else
-					orphansIter.remove();
-			}
-		}
-
-		// resolve dependencies
-		Iterator plugins = idmap.entrySet().iterator();
-		while (plugins.hasNext()) {
-			IndexEntry ix = (IndexEntry) ((Map.Entry) plugins.next()).getValue();
-			// Now go off and find the plugin that matches the
-			// constraints.  Note that root plugins will always use the 
-			// latest version.
-			ix.resolveDependencies(roots);
-		}
-
-		// walk down the registry structure and resolve links
-		// between extensions and extension points
-		resolvePluginRegistry();
-
-		// unhook registry and index
-		idmap = null;
-		reg = null;
-	}
-
-	public IStatus resolve(PluginRegistryModel registry) {
-		// This is the entry point to the registry resolver.
-		// Calling this method, with a valid registry will 
-		// cause this registry to be 'resolved'.
-
-		status = new MultiStatus(Platform.PI_RUNTIME, IStatus.OK, "", null); //$NON-NLS-1$
-
-		if (registry.isResolved())
-			// don't bother doing anything if it's already resolved
-			return status;
-
-		reg = registry;
-		resolve();
-		registry.markResolved();
-		return status;
-	}
-
-	private void resolveExtension(ExtensionModel ext) {
-
-		String target = ext.getExtensionPoint();
-		int ix = target.lastIndexOf("."); //$NON-NLS-1$
-		String pluginId = target.substring(0, ix);
-		String extPtId = target.substring(ix + 1);
-		String message;
-
-		PluginDescriptorModel plugin = (PluginDescriptorModel) reg.getPlugin(pluginId);
-		if (plugin == null) {
-			message = NLS.bind(Messages.parse_extPointUnknown, target, ext.getParentPluginDescriptor().getId());
-			error(message);
-			return;
-		}
-		if (!plugin.getEnabled()) {
-			message = NLS.bind(Messages.parse_extPointDisabled, target, ext.getParentPluginDescriptor().getId());
-			error(message);
-			return;
-		}
-
-		ExtensionPointModel extPt = (ExtensionPointModel) getExtensionPoint(plugin, extPtId);
-		if (extPt == null) {
-			message = NLS.bind(Messages.parse_extPointUnknown, target, ext.getParentPluginDescriptor().getId());
-			error(message);
-			return;
-		}
-
-		ExtensionModel[] oldValues = extPt.getDeclaredExtensions();
-		ExtensionModel[] newValues = null;
-		if (oldValues == null)
-			newValues = new ExtensionModel[1];
-		else {
-			newValues = new ExtensionModel[oldValues.length + 1];
-			System.arraycopy(oldValues, 0, newValues, 0, oldValues.length);
-		}
-		newValues[newValues.length - 1] = ext;
-		extPt.setDeclaredExtensions(newValues);
-	}
-
-	private Cookie resolveNode(String child, PluginDescriptorModel parent, PluginPrerequisiteModel prq, Cookie cookie, Set orphans) {
-		// This method is called recursively to setup dependency constraints.
-		// Top invocation is passed null parent and null prerequisite.
-		// We are trying to resolve for the plugin descriptor with id 'child'.
-
-		if (DEBUG_RESOLVE)
-			debug("PUSH> " + child); //$NON-NLS-1$
-
-		if (cookie == null)
-			cookie = new Cookie();
-
-		// lookup child entry
-		IndexEntry ix = (IndexEntry) idmap.get(child);
-		// We should now have the IndexEntry for the plugin we 
-		// wish to resolve
-		if (ix == null) {
-			// If this is an optional prerequisite and not a root
-			// node, we can just ignore this prerequisite if there
-			// is no IndexEntry (as there is no corresponding plugin)
-			// and continue processing.
-			if (prq.getOptional() && parent != null && child != null)
-				return cookie;
-			if (parent != null)
-				error(NLS.bind(Messages.parse_prereqDisabled, parent.getId(), child));
-			if (DEBUG_RESOLVE)
-				debug("<POP  " + child + " not found"); //$NON-NLS-1$ //$NON-NLS-2$
-			cookie.isOk(false);
-			return cookie;
-		}
-
-		// try to add new dependency constraint
-		Constraint currentConstraint = new Constraint(parent, prq);
-		// A constraint will be added for each parent which requires us.
-		PluginDescriptorModel childPd = null;
-		if (parent != null) {
-			childPd = ix.addConstraint(currentConstraint);
-			if (childPd == null) {
-				if (prq.getOptional()) {
-					// This is an optional prerequisite.  Ignore the conflict and this
-					// prerequisite.
-					orphans.add(ix.getId());
-					information(NLS.bind(Messages.parse_unsatisfiedOptPrereq, parent.getId(), child));
-					return cookie;
-				} else {
-					// This prerequisite is mandatory.  
-					String message = NLS.bind(Messages.parse_unsatisfiedPrereq, parent.getId(), child);
-					error(message);
-					if (DEBUG_RESOLVE)
-						debug("<POP  " + child + " unable to satisfy constraint"); //$NON-NLS-1$ //$NON-NLS-2$
-					cookie.isOk(false);
-					return cookie;
-				}
-			} else if (!cookie.addChange(currentConstraint)) {
-				if (prq.getOptional()) {
-					// This is an optional prerequisite.  Ignore the loop, and the
-					// prerequisite
-					information(NLS.bind(Messages.parse_prereqOptLoop, parent.getId(), child));
-					return cookie;
-				} else {
-					String message = NLS.bind(Messages.parse_prereqLoop, parent.getId(), child);
-					error(message);
-					if (DEBUG_RESOLVE)
-						debug("<POP  " + child + " prerequisite loop"); //$NON-NLS-1$ //$NON-NLS-2$
-					cookie.isOk(false);
-					return cookie;
-				}
-			}
-		} else {
-			// This is a root node.  There is no prerequisite so this IndexEntry must
-			// exist
-			childPd = ix.getMatchingDescriptorFor(currentConstraint);
-			if (childPd == null) {
-				if (DEBUG_RESOLVE)
-					debug("<POP  " + child + " not found (missing descriptor entry)"); //$NON-NLS-1$ //$NON-NLS-2$
-				cookie.isOk(false);
-				return cookie;
-			}
-		}
-
-		// check to see if subtree is already resolved
-		if (ix.isResolvedFor(currentConstraint)) {
-			if (DEBUG_RESOLVE)
-				debug("<POP  " + child + " already resolved"); //$NON-NLS-1$ //$NON-NLS-2$
-			return cookie;
-		}
-
-		// select the subtree to resolve
-		PluginPrerequisiteModel[] prereqs = childPd.getRequires();
-		PluginPrerequisiteModel prereq;
-		prereqs = prereqs == null ? new PluginPrerequisiteModel[0] : prereqs;
-		for (int i = 0; cookie.isOk() && i < prereqs.length; i++) {
-			prereq = (PluginPrerequisiteModel) prereqs[i];
-			cookie = resolveNode(prereq.getPlugin(), childPd, prereq, cookie, orphans);
-		}
-
-		// if we failed, remove any constraints we added
-		if (!cookie.isOk()) {
-			Constraint cookieConstraint;
-			for (Iterator change = cookie.getChanges().iterator(); change.hasNext();) {
-				cookieConstraint = (Constraint) change.next();
-				prereq = cookieConstraint.getPrerequisite();
-				if (childPd == cookieConstraint.getParent()) {
-					// keep track of orphaned subtrees
-					if (!orphans.contains(prereq.getPlugin()) && (idmap.get(prereq.getPlugin()) != null))
-						orphans.add(prereq.getPlugin());
-				}
-				removeConstraintFor(prereq);
-			}
-			// Make sure you picked up all the orphaned subtrees
-			// for this childPd
-			for (int i = 0; i < prereqs.length; i++) {
-				if (!orphans.contains(prereqs[i].getPlugin()) && (idmap.get(prereqs[i].getPlugin()) != null))
-					orphans.add(prereqs[i].getPlugin());
-			}
-			if (parent != null)
-				error(NLS.bind(Messages.parse_prereqDisabled, parent.getId(), child));
-			childPd.setEnabled(false);
-			if (DEBUG_RESOLVE)
-				debug("<POP  " + child + " failed to resolve subtree"); //$NON-NLS-1$ //$NON-NLS-2$
-			return cookie;
-		} else {
-			// we're done
-			ix.isResolvedFor(currentConstraint, true);
-			if (DEBUG_RESOLVE)
-				debug("<POP  " + child + " " + getVersionIdentifier(childPd)); //$NON-NLS-1$ //$NON-NLS-2$
-			return cookie;
-		}
-	}
-
-	private void resolvePluginDescriptor(PluginDescriptorModel pd) {
-		ExtensionModel[] list = pd.getDeclaredExtensions();
-		if (list == null || list.length == 0 || !pd.getEnabled())
-			// Can be disabled if all required attributes not present
-			return;
-		for (int i = 0; i < list.length; i++)
-			resolveExtension((ExtensionModel) list[i]);
-	}
-
-	private void resolvePluginFragment(PluginFragmentModel fragment, PluginDescriptorModel plugin) {
-		ExtensionModel[] extensions = fragment.getDeclaredExtensions();
-		if (extensions != null)
-			// Add all the fragment extensions to the plugin
-			addExtensions(extensions, plugin);
-
-		ExtensionPointModel[] points = fragment.getDeclaredExtensionPoints();
-		if (points != null)
-			// Add all the fragment extension points to the plugin
-			addExtensionPoints(points, plugin);
-
-		LibraryModel[] libraries = fragment.getRuntime();
-		if (libraries != null)
-			// Add all the fragment library entries to the plugin
-			addLibraries(libraries, plugin);
-
-		PluginPrerequisiteModel[] prerequisites = fragment.getRequires();
-		if (prerequisites != null)
-			// Add all the fragment prerequisites to the plugin
-			addPrerequisites(prerequisites, plugin);
-	}
-
-	private void resolvePluginFragments(PluginDescriptorModel plugin) {
-		/* For each fragment contained in the fragment list of this plugin, 
-		 * apply all the fragment bits to the plugin (e.g. all of the fragment's
-		 * extensions are added to the list of extensions in the plugin).  Be
-		 * sure to use only the latest version of any given fragment (in case
-		 * there are multiple versions of a given fragment id).  So note that,
-		 * if there are multiple versions of a given fragment id, all but the
-		 * latest version will be discarded.
-		 */
-
-		// The boolean 'dirty' will remain false if there is only one
-		// version of every fragment id associated with this plugin
-		boolean dirty = false;
-
-		PluginFragmentModel[] fragmentList = plugin.getFragments();
-		HashMap latestFragments = new HashMap(30);
-		for (int i = 0; i < fragmentList.length; i++) {
-			String fragmentId = fragmentList[i].getId();
-			PluginFragmentModel latestVersion = (PluginFragmentModel) latestFragments.get(fragmentId);
-			if (latestVersion == null) {
-				// We don't have any fragments with this id yet
-				latestFragments.put(fragmentId, fragmentList[i]);
-			} else {
-				dirty = true;
-				if (getVersionIdentifier(fragmentList[i]).equals(getVersionIdentifier(latestVersion)))
-					// ignore duplicates
-					error(NLS.bind(Messages.parse_duplicateFragment, fragmentId, fragmentList[i].getVersion()));
-				if (getVersionIdentifier(fragmentList[i]).isGreaterThan(getVersionIdentifier(latestVersion))) {
-					latestFragments.put(fragmentId, fragmentList[i]);
-				}
-			}
-		}
-
-		// latestFragments now contains the latest version of each fragment
-		// id for this plugin
-
-		// Now add the latest version of each fragment to the plugin
-		Set latestOnly = new HashSet();
-		for (Iterator list = latestFragments.values().iterator(); list.hasNext();) {
-			PluginFragmentModel latestFragment = (PluginFragmentModel) list.next();
-			if (dirty)
-				latestOnly.add(latestFragment);
-			int numLibraries = latestFragment.getRuntime() == null ? 0 : latestFragment.getRuntime().length;
-			resolvePluginFragment(latestFragment, plugin);
-			// If this fragment added library entries, check to see if it
-			// added a duplicate library entry.
-			if (numLibraries != 0) {
-				// Something got added
-				LibraryModel[] libraries = plugin.getRuntime();
-				// Put all the library names into a set as we know the set will not
-				// have any duplicates.
-				Set libNames = new HashSet();
-				int setSize = libNames.size();
-				for (int i = 0; i < libraries.length; i++) {
-					libNames.add(libraries[i].getName());
-					if (libNames.size() == setSize) {
-						// We know this library name didn't get added to the set.
-						// Ignore the duplicate but indicate an error
-						String[] bindings = {latestFragment.getId(), plugin.getId(), libraries[i].getName()};
-						error(NLS.bind(Messages.parse_duplicateLib, bindings));
-					} else {
-						setSize = libNames.size();
-					}
-				}
-			}
-		}
-		// Currently the fragments on the plugin include all fragment 
-		// versions.  Now strip off all but the latest version of each
-		// fragment id (only if necessary).
-		if (dirty)
-			plugin.setFragments((PluginFragmentModel[]) latestOnly.toArray(new PluginFragmentModel[latestOnly.size()]));
-
-	}
-
-	private void resolvePluginRegistry() {
-		// filter out disabled plugins from "live" registry
-		if (trimPlugins)
-			trimRegistry();
-
-		// resolve relationships
-		if (crossLink) {
-			// cross link all of the extensions and extension points.
-			PluginDescriptorModel[] plugins = reg.getPlugins();
-			for (int i = 0; i < plugins.length; i++)
-				resolvePluginDescriptor(plugins[i]);
-		}
-	}
-
-	private boolean requiredPluginDescriptor(PluginDescriptorModel plugin) {
-		boolean retValue = true;
-		retValue = plugin.getName() != null && plugin.getId() != null && plugin.getVersion() != null;
-		if (!retValue)
-			return retValue;
-
-		PluginPrerequisiteModel[] requiresList = plugin.getRequires();
-		ExtensionModel[] extensions = plugin.getDeclaredExtensions();
-		ExtensionPointModel[] extensionPoints = plugin.getDeclaredExtensionPoints();
-		LibraryModel[] libraryList = plugin.getRuntime();
-		PluginFragmentModel[] fragments = plugin.getFragments();
-
-		if (requiresList != null) {
-			for (int i = 0; i < requiresList.length && retValue; i++) {
-				retValue = retValue && requiredPrerequisite(requiresList[i]);
-			}
-		}
-		if (extensions != null) {
-			for (int i = 0; i < extensions.length && retValue; i++) {
-				retValue = retValue && requiredExtension(extensions[i]);
-			}
-		}
-		if (extensionPoints != null) {
-			for (int i = 0; i < extensionPoints.length && retValue; i++) {
-				retValue = retValue && requiredExtensionPoint(extensionPoints[i]);
-			}
-		}
-		if (libraryList != null) {
-			for (int i = 0; i < libraryList.length && retValue; i++) {
-				retValue = retValue && requiredLibrary(libraryList[i]);
-			}
-		}
-		if (fragments != null) {
-			for (int i = 0; i < fragments.length && retValue; i++) {
-				retValue = retValue && requiredFragment(fragments[i]);
-			}
-		}
-
-		return retValue;
-	}
-
-	private boolean requiredPrerequisite(PluginPrerequisiteModel prerequisite) {
-		return ((prerequisite.getPlugin() != null));
-	}
-
-	private boolean requiredExtension(ExtensionModel extension) {
-		return (extension.getExtensionPoint() != null);
-	}
-
-	private boolean requiredExtensionPoint(ExtensionPointModel extensionPoint) {
-		return ((extensionPoint.getName() != null) && (extensionPoint.getId() != null));
-	}
-
-	private boolean requiredLibrary(LibraryModel library) {
-		return (library.getName() != null);
-	}
-
-	private boolean requiredFragment(PluginFragmentModel fragment) {
-		return ((fragment.getName() != null) && (fragment.getId() != null) && (fragment.getPlugin() != null) && (fragment.getPluginVersion() != null) && (fragment.getVersion() != null));
-	}
-
-	private List resolveRootDescriptors() {
-
-		// Determine the roots of the dependency tree. Disable all
-		// but one versions of the root descriptors.
-
-		// get list of all plugin identifiers in the registry
-		List ids = new ArrayList();
-		ids.addAll(idmap.keySet());
-
-		// ids is just a list of all the plugin id's
-		// The following while loop will remove all id's that
-		// appear in any prerequisite list.
-
-		// iterate over the list eliminating targets of <requires> entries
-		Iterator p = idmap.entrySet().iterator();
-		while (p.hasNext()) {
-			IndexEntry ix = (IndexEntry) ((Map.Entry) p.next()).getValue();
-			if (ix != null) {
-				List list = ix.versions();
-				int ixSize = list.size();
-				if (ixSize > 0) {
-					// Remove any prerequisite mentioned in any version of this plugin
-					for (int i = 0; i < ixSize; i++) {
-						PluginDescriptorModel pd = (PluginDescriptorModel) list.get(i);
-						PluginPrerequisiteModel[] prereqs = pd.getRequires();
-						for (int j = 0; prereqs != null && j < prereqs.length; j++) {
-							ids.remove(prereqs[j].getPlugin());
-						}
-					}
-				}
-			}
-		}
-
-		if (ids.size() > 0) {
-			// disable all but the most recent version of root descriptors
-			String id;
-			p = ids.iterator();
-			while (p.hasNext()) {
-				id = (String) p.next();
-				IndexEntry ix = (IndexEntry) idmap.get(id);
-				if (ix != null) {
-					List list = ix.versions();
-					for (int i = 0; i < list.size(); i++) {
-						PluginDescriptorModel pd = (PluginDescriptorModel) list.get(i);
-						if (i == 0) {
-							// Don't disable this one.  It is the
-							// one with the highest version number.
-							if (DEBUG_RESOLVE)
-								debug("root " + pd); //$NON-NLS-1$
-						} else {
-							// Disable all versions except the one with the
-							// highest version number.
-							if (DEBUG_RESOLVE)
-								debug("     " + pd + " disabled"); //$NON-NLS-1$ //$NON-NLS-2$
-							pd.setEnabled(false);
-						}
-					}
-				}
-			}
-		} else {
-			if (DEBUG_RESOLVE)
-				debug("NO ROOTS"); //$NON-NLS-1$
-		}
-
-		return ids;
-	}
-
-	/**
-	 * Specifies whether extensions and extension points should be cross 
-	 * linked during the resolve process.
-	 */
-	public void setCrossLink(boolean value) {
-		crossLink = value;
-	}
-
-	/**
-	 * Specified whether disabled plugins should to be removed when the resolve
-	 * is completed.
-	 */
-	public void setTrimPlugins(boolean value) {
-		trimPlugins = value;
-	}
-
-	private void trimRegistry() {
-		PluginDescriptorModel[] list = reg.getPlugins();
-		for (int i = 0; i < list.length; i++) {
-			PluginDescriptorModel pd = (PluginDescriptorModel) list[i];
-			if (!pd.getEnabled()) {
-				if (DEBUG_RESOLVE)
-					debug("removing " + pd.toString()); //$NON-NLS-1$
-				reg.removePlugin(pd.getId(), pd.getVersion());
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/ConfigurationElementModel.java b/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/ConfigurationElementModel.java
deleted file mode 100644
index 9d2752d..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/ConfigurationElementModel.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.model;
-
-/**
- * An object which represents the user-defined contents of an extension in a
- * plug-in manifest.
- * <p>
- * This class may be instantiated, or further subclassed.
- * </p>
- * @deprecated In Eclipse 3.0 the runtime was refactored and all 
- * non-essential elements removed.  This class provides facilities primarily intended
- * for tooling.  As such it has been removed and no directly substitutable API provided.
- */
-public class ConfigurationElementModel extends PluginModelObject {
-
-	// DTD properties (included in plug-in manifest)
-	private String value = null;
-	private ConfigurationPropertyModel[] properties = null;
-	private ConfigurationElementModel[] children = null;
-
-	// transient properties (not included in plug-in manifest)
-	private Object parent = null; // parent element or declaring extension
-
-	/**
-	 * Creates a new configuration element model in which all fields are <code>null</code>.
-	 */
-	public ConfigurationElementModel() {
-		super();
-	}
-
-	/**
-	 * Returns the element which contains this element. If this element is an
-	 * immediate child of an extension, the returned value can be downcast to
-	 * <code>ExtensionModel</code>. Otherwise the returned value can be
-	 * downcast to <code>ConfigurationElementModel</code>.
-	 * 
-	 * @return the parent of this configuration element or <code>null</code>
-	 */
-	public Object getParent() {
-		return parent;
-	}
-
-	/**
-	 * Returns the extension in which this configuration element is declared.
-	 * If this element is a top-level child of an extension, the returned value
-	 * is equivalent to <code>getParent</code>.
-	 * 
-	 * @return the extension in which this configuration element is declared or
-	 *               <code>null</code>
-	 */
-	public ExtensionModel getParentExtension() {
-		Object p = getParent();
-		while (p != null && p instanceof ConfigurationElementModel)
-			p = ((ConfigurationElementModel) p).getParent();
-		return (ExtensionModel) p;
-	}
-
-	/**
-	 * Returns the properties associated with this element.
-	 * 
-	 * @return the properties associated with this element or <code>null</code>
-	 */
-	public ConfigurationPropertyModel[] getProperties() {
-		return properties;
-	}
-
-	/**
-	 * Returns this element's sub-elements.
-	 * 
-	 * @return the sub-elements of this element or <code>null</code>
-	 */
-	public ConfigurationElementModel[] getSubElements() {
-		return children;
-	}
-
-	/**
-	 * Returns the value of this element.
-	 * 
-	 * @return the value of this element or <code>null</code>
-	 */
-	public String getValue() {
-		return value;
-	}
-
-	/**
-	 * Returns the value of this element.
-	 * 
-	 * @return the value of this element or <code>null</code>
-	 * @since 2.0
-	 */
-	public String getValueAsIs() {
-		return value;
-	}
-
-	/**
-	 * Sets this model object and all of its descendents to be read-only.
-	 * Subclasses may extend this implementation.
-	 * 
-	 * @see #isReadOnly()
-	 */
-	public void markReadOnly() {
-		super.markReadOnly();
-		if (children != null)
-			for (int i = 0; i < children.length; i++)
-				children[i].markReadOnly();
-		if (properties != null)
-			for (int i = 0; i < properties.length; i++)
-				properties[i].markReadOnly();
-	}
-
-	/**
-	 * Optimization to replace a non-localized key with its localized value.
-	 * Avoids having to access resource bundles for further lookups.
-	 * 
-	 * @param value the localized value of this model object
-	 */
-	public void setLocalizedValue(String value) {
-		this.value = value;
-	}
-
-	/**
-	 * Sets the parent of this element. The supplied parent is either an <code>ExtensionModel</code>,
-	 * if this element is to be a direct child of an extension, or another
-	 * <code>ConfigurationElement</code>. This object must not be read-only.
-	 * 
-	 * @param value
-	 *                   the new parent of this element. May be <code>null</code>.
-	 */
-	public void setParent(Object value) {
-		assertIsWriteable();
-		parent = value;
-	}
-
-	/**
-	 * Sets the properties associated with this element. This object must not
-	 * be read-only.
-	 * 
-	 * @param value
-	 *                   the properties to associate with this element. May be <code>null</code>.
-	 */
-	public void setProperties(ConfigurationPropertyModel[] value) {
-		assertIsWriteable();
-		properties = value;
-	}
-
-	/**
-	 * Sets configuration elements contained by this element This object must
-	 * not be read-only.
-	 * 
-	 * @param value
-	 *                   the configuration elements to be associated with this
-	 *                   element. May be <code>null</code>.
-	 */
-	public void setSubElements(ConfigurationElementModel[] value) {
-		assertIsWriteable();
-		children = value;
-	}
-
-	/**
-	 * Sets the value of this element. This object must not be read-only.
-	 * 
-	 * @param value
-	 *                   the new value of this element. May be <code>null</code>.
-	 */
-	public void setValue(String value) {
-		assertIsWriteable();
-		this.value = value;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/ConfigurationPropertyModel.java b/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/ConfigurationPropertyModel.java
deleted file mode 100644
index 94eab18..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/ConfigurationPropertyModel.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.model;
-
-/**
- * An object which represents the user-defined properties in a configuration
- * element of a plug-in manifest. Properties are <code>String</code> -based
- * key/value pairs.
- * <p>
- * This class may be instantiated, or further subclassed.
- * </p>
- * @deprecated In Eclipse 3.0 the runtime was refactored and all 
- * non-essential elements removed.  This class provides facilities primarily intended
- * for tooling.  As such it has been removed and no directly substitutable API provided.
- */
-public class ConfigurationPropertyModel extends PluginModelObject {
-
-	// DTD properties (included in plug-in manifest)
-	private String value = null;
-
-	/**
-	 * Creates a new configuration property model in which all fields are
-	 * <code>null</code>.
-	 */
-	public ConfigurationPropertyModel() {
-		super();
-	}
-
-	/**
-	 * Returns the value of this property.
-	 * 
-	 * @return the value of this property or <code>null</code>
-	 */
-	public String getValue() {
-		return value;
-	}
-
-	/**
-	 * Optimization to replace a non-localized key with its localized value.
-	 * Avoids having to access resource bundles for further lookups.
-	 * 
-	 * @param value the localized value of this model object
-	 */
-	public void setLocalizedValue(String value) {
-		this.value = value;
-	}
-
-	/**
-	 * Sets the value of this property. This object must not be read-only.
-	 * 
-	 * @param value the new value of this property. May be <code>null</code>.
-	 */
-	public void setValue(String value) {
-		assertIsWriteable();
-		this.value = value;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/ExtensionModel.java b/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/ExtensionModel.java
deleted file mode 100644
index 4d446ca..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/ExtensionModel.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.model;
-
-/**
- * An object which represents the user-defined extension in a plug-in manifest.
- * <p>
- * This class may be instantiated, or further subclassed.
- * </p>
- * @deprecated In Eclipse 3.0 the runtime was refactored and all 
- * non-essential elements removed.  This class provides facilities primarily intended
- * for tooling.  As such it has been removed and no directly substitutable API provided.
- */
-public class ExtensionModel extends PluginModelObject {
-
-	// DTD properties (included in plug-in manifest)
-	private String extensionPoint = null;
-	private String id = null;
-	private ConfigurationElementModel[] elements = null;
-
-	// transient properties (not included in plug-in manifest)
-	private PluginModel plugin = null; // declaring plugin
-
-	/**
-	 * Creates a new extension model in which all fields are <code>null</code>.
-	 */
-	public ExtensionModel() {
-		super();
-	}
-
-	/**
-	 * Returns the extension point with which this extension is associated.
-	 * 
-	 * @return the extension point with which this extension is associated or
-	 *               <code>null</code>
-	 */
-	public String getExtensionPoint() {
-		return extensionPoint;
-	}
-
-	/**
-	 * Returns the simple identifier of this extension, or <code>null</code>
-	 * if this extension does not have an identifier. This identifier is
-	 * specified in the plug-in manifest as a non-empty string containing no
-	 * period characters (<code>'.'</code>) and must be unique within the
-	 * defining plug-in.
-	 * 
-	 * @return the simple identifier of the extension (e.g. <code>"main"</code>)
-	 *               or <code>null</code>
-	 */
-	public String getId() {
-		return id;
-	}
-
-	/**
-	 * Returns the plug-in model (descriptor or fragment) in which this
-	 * extension is declared.
-	 * 
-	 * @return the plug-in model in which this extension is declared or <code>null</code>
-	 */
-	public PluginModel getParent() {
-		return plugin;
-	}
-
-	/**
-	 * Returns the plug-in descriptor in which this extension is declared.
-	 * 
-	 * @return the plug-in descriptor in which this extension is declared or
-	 *               <code>null</code>
-	 */
-	public PluginDescriptorModel getParentPluginDescriptor() {
-		return (PluginDescriptorModel) plugin;
-	}
-
-	/**
-	 * Returns the configuration element children of this extension.
-	 * 
-	 * @return the configuration elements in this extension or <code>null</code>
-	 */
-	public ConfigurationElementModel[] getSubElements() {
-		return elements;
-	}
-
-	/**
-	 * Sets this model object and all of its descendents to be read-only.
-	 * Subclasses may extend this implementation.
-	 * 
-	 * @see #isReadOnly()
-	 */
-	public void markReadOnly() {
-		super.markReadOnly();
-		if (elements != null)
-			for (int i = 0; i < elements.length; i++)
-				elements[i].markReadOnly();
-	}
-
-	/**
-	 * Set the extension point with which this extension is associated. This
-	 * object must not be read-only.
-	 * 
-	 * @param value the extension point with which this extension is associated. May
-	 *               be <code>null</code>.
-	 */
-	public void setExtensionPoint(String value) {
-		assertIsWriteable();
-		extensionPoint = value;
-	}
-
-	/**
-	 * Sets the simple identifier of this extension, or <code>null</code> if
-	 * this extension does not have an identifier. This identifier is specified
-	 * in the plug-in manifest as a non-empty string containing no period
-	 * characters (<code>'.'</code>) and must be unique within the defining
-	 * plug-in. This object must not be read-only.
-	 * 
-	 * @param value
-	 *                   the simple identifier of the extension (e.g. <code>"main"</code>).
-	 *                   May be <code>null</code>.
-	 */
-	public void setId(String value) {
-		assertIsWriteable();
-		id = value;
-	}
-
-	/**
-	 * Sets the plug-in model in which this extension is declared. This object
-	 * must not be read-only.
-	 * 
-	 * @param value
-	 *                   the plug-in model in which this extension is declared. May be
-	 *                   <code>null</code>.
-	 */
-	public void setParent(PluginModel value) {
-		assertIsWriteable();
-		plugin = value;
-	}
-
-	/**
-	 * Sets the plug-in descriptor in which this extension is declared. This
-	 * object must not be read-only.
-	 * 
-	 * @param value
-	 *                   the plug-in descriptor in which this extension is declared.
-	 *                   May be <code>null</code>.
-	 */
-	public void setParentPluginDescriptor(PluginDescriptorModel value) {
-		assertIsWriteable();
-		plugin = value;
-	}
-
-	/**
-	 * Sets the configuration element children of this extension. This object
-	 * must not be read-only.
-	 * 
-	 * @param value
-	 *                   the configuration elements in this extension. May be <code>null</code>.
-	 */
-	public void setSubElements(ConfigurationElementModel[] value) {
-		assertIsWriteable();
-		elements = value;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/ExtensionPointModel.java b/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/ExtensionPointModel.java
deleted file mode 100644
index 2c18777..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/ExtensionPointModel.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.model;
-
-/**
- * An object which represents the user-defined extension point in a plug-in
- * manifest.
- * <p>
- * This class may be instantiated, or further subclassed.
- * </p>
- * @deprecated In Eclipse 3.0 the runtime was refactored and all 
- * non-essential elements removed.  This class provides facilities primarily intended
- * for tooling.  As such it has been removed and no directly substitutable API provided.
- */
-public class ExtensionPointModel extends PluginModelObject {
-
-	// DTD properties (included in plug-in manifest)
-	private String id = null;
-	private String schema = null;
-
-	// transient properties (not included in plug-in manifest)
-	private PluginModel plugin = null; // declaring plugin
-	private ExtensionModel[] extensions = null; // configured extensions
-
-	/**
-	 * Creates a new extension point model in which all fields are <code>null</code>.
-	 */
-	public ExtensionPointModel() {
-		super();
-	}
-
-	/**
-	 * Returns this extensions added to this extension point.
-	 * 
-	 * @return the extensions in this extension point or <code>null</code>
-	 */
-	public ExtensionModel[] getDeclaredExtensions() {
-		return extensions;
-	}
-
-	/**
-	 * Returns the simple identifier of this extension point, or <code>null</code>
-	 * if this extension point does not have an identifier. This identifier is
-	 * specified in the plug-in manifest as a non-empty string containing no
-	 * period characters (<code>'.'</code>) and must be unique within the
-	 * defining plug-in.
-	 * 
-	 * @return the simple identifier of the extension point (e.g. <code>"main"</code>)
-	 *               or <code>null</code>
-	 */
-	public String getId() {
-		return id;
-	}
-
-	/**
-	 * Returns the plug-in model (descriptor or fragment) in which this
-	 * extension is declared.
-	 * 
-	 * @return the plug-in model in which this extension is declared or <code>null</code>
-	 */
-	public PluginModel getParent() {
-		return plugin;
-	}
-
-	/**
-	 * Returns the plug-in descriptor in which this extension point is
-	 * declared.
-	 * 
-	 * @return the plug-in descriptor in which this extension point is declared
-	 *               or <code>null</code>
-	 */
-	public PluginDescriptorModel getParentPluginDescriptor() {
-		return (PluginDescriptorModel) plugin;
-	}
-
-	/**
-	 * Returns the schema specification for this extension point.
-	 * 
-	 * @return the schema specification for this extension point or <code>null</code>
-	 */
-	public String getSchema() {
-		return schema;
-	}
-
-	/**
-	 * Sets this extensions added to this extension point. This object must not
-	 * be read-only.
-	 * 
-	 * @param value the extensions in this extension point. May be <code>null</code>.
-	 */
-	public void setDeclaredExtensions(ExtensionModel[] value) {
-		assertIsWriteable();
-		extensions = value;
-	}
-
-	/**
-	 * Sets the simple identifier of this extension point, or <code>null</code>
-	 * if this extension point does not have an identifier. This identifier is
-	 * specified in the plug-in manifest as a non-empty string containing no
-	 * period characters (<code>'.'</code>) and must be unique within the
-	 * defining plug-in. This object must not be read-only.
-	 * 
-	 * @param value the simple identifier of the extension point (e.g. <code>"main"</code>).
-	 *              May be <code>null</code>.
-	 */
-	public void setId(String value) {
-		assertIsWriteable();
-		id = value;
-	}
-
-	/**
-	 * Sets the plug-in model in which this extension is declared. This object
-	 * must not be read-only.
-	 * 
-	 * @param value the plug-in model in which this extension is declared. May be <code>null</code>.
-	 */
-	public void setParent(PluginModel value) {
-		assertIsWriteable();
-		plugin = value;
-	}
-
-	/**
-	 * Sets the plug-in descriptor in which this extension point is declared.
-	 * This object must not be read-only.
-	 * 
-	 * @param value the plug-in descriptor in which this extension point is declared.
-	 *             May be <code>null</code>.
-	 */
-	public void setParentPluginDescriptor(PluginDescriptorModel value) {
-		assertIsWriteable();
-		plugin = value;
-	}
-
-	/**
-	 * Sets the schema specification for this extension point. This object must
-	 * not be read-only.
-	 * 
-	 * @param value the schema specification for this extension point. May be
-	 *          <code>null</code>.
-	 */
-	public void setSchema(String value) {
-		assertIsWriteable();
-		schema = value;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/Factory.java b/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/Factory.java
deleted file mode 100644
index 0d48059..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/Factory.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.model;
-
-import org.eclipse.core.internal.runtime.InternalPlatform;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-
-/**
- * An object which can create plug-in related model objects (typically when
- * parsing plug-in manifest files).
- * <p>
- * This class may be instantiated, or further subclassed.
- * </p>
- * @deprecated In Eclipse 3.0 the runtime was refactored and all 
- * non-essential elements removed.  This class provides facilities primarily intended
- * for tooling.  As such it has been removed and no directly substitutable API provided.
- */
-
-public class Factory {
-	private MultiStatus status;
-
-	/**
-	 * Creates a factory which can be used to create plug-in model objects.
-	 * Errors and warnings during parsing etc. can be logged to the given 
-	 * status via the <code>error</code> method.
-	 *
-	 * @param status the status to which errors should be logged
-	 */
-	public Factory(MultiStatus status) {
-		super();
-		this.status = status;
-	}
-
-	/**
-	 * Returns a new configuration element model which is not initialized.
-	 *
-	 * @return a new configuration element model
-	 */
-	public ConfigurationElementModel createConfigurationElement() {
-		return new ConfigurationElementModel();
-	}
-
-	/**
-	 * Returns a new configuration property model which is not initialized.
-	 *
-	 * @return a new configuration property model
-	 */
-	public ConfigurationPropertyModel createConfigurationProperty() {
-		return new ConfigurationPropertyModel();
-	}
-
-	/**
-	 * Returns a new extension model which is not initialized.
-	 *
-	 * @return a new extension model
-	 */
-	public ExtensionModel createExtension() {
-		return new ExtensionModel();
-	}
-
-	/**
-	 * Returns a new extension point model which is not initialized.
-	 *
-	 * @return a new extension point model
-	 */
-	public ExtensionPointModel createExtensionPoint() {
-		return new ExtensionPointModel();
-	}
-
-	/**
-	 * Returns a new library model which is initialized to not export any
-	 * of its code.
-	 *
-	 * @return a new library model
-	 */
-	public LibraryModel createLibrary() {
-		return new LibraryModel();
-	}
-
-	/**
-	 * Returns a new plug-in descriptor model which is not initialized.
-	 *
-	 * @return a new plug-in descriptor model
-	 */
-	public PluginDescriptorModel createPluginDescriptor() {
-		return new PluginDescriptorModel();
-	}
-
-	/**
-	 * Returns a new plug-in fragment model which is not initialized.
-	 *
-	 * @return a new plug-in fragment model
-	 */
-	public PluginFragmentModel createPluginFragment() {
-		return new PluginFragmentModel();
-	}
-
-	/**
-	 * Returns a new plug-in prerequisite model which is initialized to
-	 * not export its code and to not require an exact match.
-	 *
-	 * @return a new plug-in prerequisite model
-	 */
-	public PluginPrerequisiteModel createPluginPrerequisite() {
-		return new PluginPrerequisiteModel();
-	}
-
-	/**
-	 * Returns a new plug-in registry model with an empty plug-in table.
-	 *
-	 * @return a new plug-in registry model
-	 */
-	public PluginRegistryModel createPluginRegistry() {
-		return new PluginRegistryModel();
-	}
-
-	/**
-	 * Returns a new URL model which is not initialized.
-	 *
-	 * @return a new URL model
-	 */
-	public URLModel createURL() {
-		return new URLModel();
-	}
-
-	/**
-	 * Handles an error state specified by the status.  The collection of all logged status
-	 * objects can be accessed using <code>getStatus()</code>.
-	 *
-	 * @param error a status detailing the error condition
-	 */
-	public void error(IStatus error) {
-		status.add(error);
-		if (InternalPlatform.DEBUG)
-			System.out.println(error.toString());
-	}
-
-	/**
-	 * Returns all of the status objects logged thus far by this factory.
-	 *
-	 * @return a multi-status containing all of the logged status objects
-	 */
-	public MultiStatus getStatus() {
-		return status;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/LibraryModel.java b/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/LibraryModel.java
deleted file mode 100644
index e75c684..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/LibraryModel.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.model;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.ILibrary;
-
-/**
- * A runtime library declared in a plug-in.  Libraries contribute elements to the search path.
- * These contributions are specified as a path to a directory or Jar file.  This path is always
- * considered to be relative to the containing plug-in.  
- * <p>
- * Libraries are typed.  The type is used to determine to which search path the library's
- * contribution should be added.  The valid types are: <code>CODE</code> and
- * <code>RESOURCE</code>.  
- * </p>
- * <p>
- * This class may be instantiated, or further subclassed.
- * </p>
- * @deprecated In Eclipse 3.0 the runtime was refactored and all 
- * non-essential elements removed.  This class provides facilities primarily intended
- * for tooling.  As such it has been removed and no directly substitutable API provided.
- */
-public class LibraryModel extends PluginModelObject {
-
-	// DTD properties (included in plug-in manifest)
-	private String[] exports = null;
-	private String type = CODE;
-	private String[] packagePrefixes = null;
-
-	// transient properties (not included in plug-in manifest)
-	private boolean isExported = false;
-	private boolean isFullyExported = false;
-
-	/**
-	 * Constant string (value "code") indicating the code library type.
-	 */
-	public static final String CODE = "code"; //$NON-NLS-1$
-
-	/**
-	 * Constant string (value "resource") indicating the resource library type.
-	 */
-	public static final String RESOURCE = "resource"; //$NON-NLS-1$
-
-	/**
-	 * Creates a new library model in which all fields
-	 * are <code>null</code>.
-	 */
-	public LibraryModel() {
-		super();
-	}
-
-	/**
-	 * Returns this library's export mask.
-	 *
-	 * @return this library's export mask or <code>null</code>
-	 */
-	public String[] getExports() {
-		return exports;
-	}
-
-	/**
-	 * Returns this library's type.  
-	 *
-	 * @return the type of this library.  The valid types are: <code>CODE</code> and <code>RESOURCE</code>.
-	 * @see #CODE
-	 * @see #RESOURCE
-	 */
-	public String getType() {
-		return type;
-	}
-
-	/**
-	 * Returns whether or not any of the code in this library is exported.
-	 *
-	 * @return whether or not any of the code in this library represents is exported
-	 */
-	public boolean isExported() {
-		return isExported;
-	}
-
-	/**
-	 * Returns whether or not all of the code in this library is exported.
-	 *
-	 * @return whether or not all of the code in this library is exported
-	 */
-	public boolean isFullyExported() {
-		return isFullyExported;
-	}
-
-	/**
-	 * Sets this library's export mask.
-	 * This object must not be read-only.
-	 *
-	 * @param value this library's export mask.  May be <code>null</code>.
-	 */
-	public void setExports(String[] value) {
-		assertIsWriteable();
-		exports = value;
-		if (value == null) {
-			isExported = false;
-			isFullyExported = false;
-		} else {
-			for (int i = 0; i < value.length; i++) {
-				if (!value[i].equals("")) //$NON-NLS-1$
-					isExported = true;
-				if (value[i].equals("*")) //$NON-NLS-1$
-					isFullyExported = true;
-			}
-		}
-	}
-
-	/**
-	 * Sets this library's type. The valid types are: <code>CODE</code> and <code>RESOURCE</code>.
-	 * The given type value is canonicalized before being set.
-	 * This object must not be read-only.
-	 *
-	 * @param value the type of this library.
-	 * @see #CODE
-	 * @see #RESOURCE
-	 */
-	public void setType(String value) {
-		assertIsWriteable();
-		String lcValue = value.toLowerCase();
-		Assert.isTrue(lcValue.equals(CODE) || lcValue.equals(RESOURCE));
-		type = lcValue;
-	}
-
-	/**
-	 * @see ILibrary#getPackagePrefixes()
-	 */
-	public String[] getPackagePrefixes() {
-		return packagePrefixes;
-	}
-
-	/**
-	 * Sets this library's package prefixes to be the specified array or <code>null</code>.
-	 * 
-	 * @param value the list of package prefixes for this library
-	 */
-	public void setPackagePrefixes(String[] value) {
-		packagePrefixes = value;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/PluginDescriptorModel.java b/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/PluginDescriptorModel.java
deleted file mode 100644
index 1c5d8e4..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/PluginDescriptorModel.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.model;
-
-/**
- * An object which represents the user-defined contents of a plug-in
- * in a plug-in manifest.
- * <p>
- * This class may be instantiated, or further subclassed.
- * </p>
- * @deprecated In Eclipse 3.0 the runtime was refactored and all 
- * non-essential elements removed.  This class provides facilities primarily intended
- * for tooling.  As such it has been removed and no directly substitutable API provided.
- */
-public class PluginDescriptorModel extends PluginModel {
-
-	// DTD properties (included in plug-in manifest)
-	private String pluginClass = null;
-
-	// transient properties (not included in plug-in manifest)
-	private boolean enabled = true; // whether or not the plugin definition loaded ok
-	private PluginFragmentModel[] fragments;
-
-	/**
-	 * Creates a new plug-in descriptor model in which all fields
-	 * are <code>null</code>.
-	 */
-	public PluginDescriptorModel() {
-		super();
-	}
-
-	/**
-	 * Returns true if this plugin has all of it's prerequisites and is,
-	 * therefore enabled.
-	 * 
-	 * @return whether or not this plug-in is fully resolved
-	 */
-	public boolean getEnabled() {
-		return enabled;
-	}
-
-	/**
-	 * Returns the fragments installed for this plug-in.
-	 *
-	 * @return this plug-in's fragments or <code>null</code>
-	 */
-	public PluginFragmentModel[] getFragments() {
-		return fragments;
-	}
-
-	/**
-	 * Returns the fully qualified name of the Java class which implements
-	 * the runtime support for this plug-in.
-	 *
-	 * @return the name of this plug-in's runtime class or <code>null</code>.
-	 */
-	public String getPluginClass() {
-		return pluginClass;
-	}
-
-	/**
-	 * Returns the unique identifier of the plug-in related to this model
-	 * or <code>null</code>.  
-	 * This identifier is a non-empty string and is unique 
-	 * within the plug-in registry.
-	 *
-	 * @return the unique identifier of the plug-in related to this model
-	 *		(e.g. <code>"com.example"</code>) or <code>null</code>. 
-	 */
-	public String getPluginId() {
-		return getId();
-	}
-
-	/**
-	 * Sets the value of the field 'enabled' to the parameter 'value'.
-	 * If this plugin is enabled (default) it is assumed to have all
-	 * of it's prerequisites.
-	 *
-	 * @param value set to false if this plugin should be disabled and
-	 * true otherwise.
-	 */
-	public void setEnabled(boolean value) {
-		enabled = value;
-	}
-
-	/**
-	 * Sets the list of fragments for this plug-in.
-	 * This object must not be read-only.
-	 *
-	 * @param value the fragments for this plug-in.  May be <code>null</code>.
-	 */
-	public void setFragments(PluginFragmentModel[] value) {
-		assertIsWriteable();
-		fragments = value;
-	}
-
-	/**
-	 * Sets the fully qualified name of the Java class which implements
-	 * the runtime support for this plug-in.
-	 * This object must not be read-only.
-	 *
-	 * @param value the name of this plug-in's runtime class.
-	 *		May be <code>null</code>.
-	 */
-	public void setPluginClass(String value) {
-		assertIsWriteable();
-		pluginClass = value;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/PluginFragmentModel.java b/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/PluginFragmentModel.java
deleted file mode 100644
index 37e36f2..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/PluginFragmentModel.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.model;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.PluginVersionIdentifier;
-
-/**
- * An object which represents the user-defined contents of a plug-in fragment
- * in a plug-in manifest.
- * <p>
- * This class may be instantiated, or further subclassed.
- * </p>
- * @deprecated In Eclipse 3.0 the runtime was refactored and all 
- * non-essential elements removed.  This class provides facilities primarily intended
- * for tooling.  As such it has been removed and no directly substitutable API provided.
- */
-public class PluginFragmentModel extends PluginModel {
-
-	public static final byte FRAGMENT_MATCH_UNSPECIFIED = 0;
-	public static final byte FRAGMENT_MATCH_PERFECT = 1;
-	public static final byte FRAGMENT_MATCH_EQUIVALENT = 2;
-	public static final byte FRAGMENT_MATCH_COMPATIBLE = 3;
-	public static final byte FRAGMENT_MATCH_GREATER_OR_EQUAL = 4;
-
-	// DTD properties (included in plug-in manifest)
-	private String plugin = null;
-	private String pluginVersion = null;
-	private byte pluginMatch = FRAGMENT_MATCH_UNSPECIFIED;
-
-	/**
-	 * Creates a new plug-in descriptor model in which all fields
-	 * are <code>null</code>.
-	 */
-	public PluginFragmentModel() {
-		super();
-	}
-
-	/**
-	 * Returns a byte code indicating the type of match this fragment requires
-	 * when trying to find its associated plugin.
-	 * The byte code can be any one of the following:
-	 * FRAGMENT_MATCH_UNSPECIFIED			initial value
-	 * FRAGMENT_MATCH_PERFECT				perfectly equal match
-	 * FRAGMENT_MATCH_EQUIVALENT			equivalent match
-	 * FRAGMENT_MATCH_COMPATIBLE			compatible match
-	 * FRAGMENT_MATCH_GREATER_OR_EQUAL		greater than or equal to match
-	 *
-	 * @return a byte code indicating the type of match this fragment requires
-	 * @since 2.0
-	 */
-	public byte getMatch() {
-		return pluginMatch;
-	}
-
-	/**
-	 * Returns the fully qualified name of the plug-in for which this is a fragment
-	 *
-	 * @return the name of this fragment's plug-in or <code>null</code>.
-	 */
-	public String getPlugin() {
-		return plugin;
-	}
-
-	/**
-	 * Returns the unique identifier of the plug-in related to this model
-	 * or <code>null</code>.  
-	 * This identifier is a non-empty string and is unique 
-	 * within the plug-in registry.
-	 *
-	 * @return the unique identifier of the plug-in related to this model
-	 *		(e.g. <code>"com.example"</code>) or <code>null</code>. 
-	 */
-	public String getPluginId() {
-		return getPlugin();
-	}
-
-	/**
-	 * Returns the version name of the plug-in for which this is a fragment.
-	 *
-	 * @return the version name of this fragment's plug-in or <code>null</code>
-	 */
-	public String getPluginVersion() {
-		return pluginVersion;
-	}
-
-	/**
-	 * Sets the type of match this fragment requires when trying to
-	 * find its associated plugin.  The value parameter may be any
-	 * one of the following:
-	 * FRAGMENT_MATCH_UNSPECIFIED			initial value
-	 * FRAGMENT_MATCH_PERFECT				perfectly equal match
-	 * FRAGMENT_MATCH_EQUIVALENT			equivalent match
-	 * FRAGMENT_MATCH_COMPATIBLE			compatible match
-	 * FRAGMENT_MATCH_GREATER_OR_EQUAL		greater than or equal to match
-	 * This object must not be read-only.
-	 *
-	 * @param value the type of match required with the associated plugin
-	 * @since 2.0
-	 */
-	public void setMatch(byte value) {
-		assertIsWriteable();
-		Assert.isTrue((value == FRAGMENT_MATCH_PERFECT) || (value == FRAGMENT_MATCH_EQUIVALENT) || (value == FRAGMENT_MATCH_COMPATIBLE) || (value == FRAGMENT_MATCH_GREATER_OR_EQUAL));
-		pluginMatch = value;
-	}
-
-	/**
-	 * Sets the fully qualified name of the plug-in for which this is a fragment
-	 * This object must not be read-only.
-	 *
-	 * @param value the name of this fragment's plug-in.
-	 *		May be <code>null</code>.
-	 */
-	public void setPlugin(String value) {
-		assertIsWriteable();
-		plugin = value;
-	}
-
-	/**
-	 * Sets the version name of the plug-in for which this is a fragment.
-	 * The given version number is canonicalized.
-	 * This object must not be read-only.
-	 *
-	 * @param value the version name of this fragment's plug-in.
-	 *		May be <code>null</code>.
-	 */
-	public void setPluginVersion(String value) {
-		assertIsWriteable();
-		pluginVersion = new PluginVersionIdentifier(value).toString();
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/PluginModel.java b/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/PluginModel.java
deleted file mode 100644
index f9ea2fa..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/PluginModel.java
+++ /dev/null
@@ -1,334 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.model;
-
-import org.eclipse.core.runtime.PluginVersionIdentifier;
-
-/**
- * An object which represents the user-defined contents of a plug-in model
- * (either a descriptor or a fragment) in a plug-in manifest.
- * <p>
- * This class may not be instantiated, but may be further subclassed.
- * </p>
- * @deprecated In Eclipse 3.0 the runtime was refactored and all 
- * non-essential elements removed.  This class provides facilities primarily intended
- * for tooling.  As such it has been removed and no directly substitutable API provided.
- */
-public abstract class PluginModel extends PluginModelObject {
-
-	/**
-	 * Manifest schema version. The version number is canonicalized.
-	 * May be <code>null</code>.
-	 * 
-	 * @since 3.0
-	 */
-	private String schemaVersion = null;
-
-	// DTD properties (included in plug-in manifest)
-	private String id = null;
-	private String providerName = null;
-	private String version = null;
-	private LibraryModel[] runtime = null;
-	private ExtensionPointModel[] extensionPoints = null;
-	private ExtensionModel[] extensions = null;
-	private PluginPrerequisiteModel[] requires = null;
-
-	// transient properties (not included in plug-in manifest)
-	private PluginRegistryModel registry = null;
-	private String location = null;
-
-	/**
-	 * Creates a new plug-in descriptor model in which all fields
-	 * are <code>null</code>.
-	 */
-	public PluginModel() {
-		super();
-	}
-
-	/**
-	 * Returns the extension points in this plug-in descriptor.
-	 *
-	 * @return the extension points in this plug-in descriptor or <code>null</code>
-	 */
-	public ExtensionPointModel[] getDeclaredExtensionPoints() {
-		return extensionPoints;
-	}
-
-	/**
-	 * Returns the extensions in this plug-in descriptor.
-	 *
-	 * @return the extensions in this plug-in descriptor or <code>null</code>
-	 */
-	public ExtensionModel[] getDeclaredExtensions() {
-		return extensions;
-	}
-
-	/**
-	 * Returns the unique identifier of this plug-in model
-	 * or <code>null</code>.
-	 * This identifier is a non-empty string and is unique 
-	 * within the plug-in registry.
-	 *
-	 * @return the unique identifier of this plugin model
-	 *		(e.g. <code>"com.example"</code>) or <code>null</code>. 
-	 */
-	public String getId() {
-		return id;
-	}
-
-	/**
-	 * Returns the location of the plug-in corresponding to this plug-in 
-	 * descriptor.  The location is in the form of a URL.
-	 *
-	 * @return the location of this plug-in descriptor or <code>null</code>.
-	 */
-	public String getLocation() {
-		return location;
-	}
-
-	/**
-	 * Returns the unique identifier of the plug-in related to this model
-	 * or <code>null</code>.  
-	 * This identifier is a non-empty string and is unique 
-	 * within the plug-in registry.
-	 *
-	 * @return the unique identifier of the plug-in related to this model
-	 *		(e.g. <code>"com.example"</code>) or <code>null</code>. 
-	 */
-	public abstract String getPluginId();
-
-	/**
-	 * Returns the name of the provider who authored this plug-in.
-	 *
-	 * @return name of the provider who authored this plug-in or <code>null</code>
-	 */
-	public String getProviderName() {
-		return providerName;
-	}
-
-	/**
-	 * Returns the plug-in registry of which this plug-in descriptor is a member.
-	 *
-	 * @return the registry in which this descriptor has been installed or 
-	 *		<code>null</code> if none.
-	 */
-	public PluginRegistryModel getRegistry() {
-		return registry;
-	}
-
-	/**
-	 * Returns the prerequisites of this plug-in.
-	 *
-	 * @return the prerequisites of this plug-in or <code>null</code>
-	 */
-	public PluginPrerequisiteModel[] getRequires() {
-		return requires;
-	}
-
-	/**
-	 * Returns the libraries configured for this plug-in.
-	 *
-	 * @return the libraries configured for this plug-in or <code>null</code>
-	 */
-	public LibraryModel[] getRuntime() {
-		return runtime;
-	}
-
-	/**
-	 * Returns the version name of this plug-in.
-	 *
-	 * @return the version name of this plug-in or <code>null</code>
-	 */
-	public String getVersion() {
-		return version;
-	}
-
-	/**
-	 * Sets this model object and all of its descendents to be read-only.
-	 * Subclasses may extend this implementation.
-	 *
-	 * @see #isReadOnly()
-	 */
-	public void markReadOnly() {
-		super.markReadOnly();
-		if (runtime != null)
-			for (int i = 0; i < runtime.length; i++)
-				runtime[i].markReadOnly();
-		if (extensionPoints != null)
-			for (int i = 0; i < extensionPoints.length; i++)
-				extensionPoints[i].markReadOnly();
-		if (extensions != null)
-			for (int i = 0; i < extensions.length; i++)
-				extensions[i].markReadOnly();
-		if (requires != null)
-			for (int i = 0; i < requires.length; i++)
-				requires[i].markReadOnly();
-	}
-
-	/**
-	 * Sets the extension points in this plug-in descriptor.
-	 * This object must not be read-only.
-	 *
-	 * @param value the extension points in this plug-in descriptor.
-	 *		May be <code>null</code>.
-	 */
-	public void setDeclaredExtensionPoints(ExtensionPointModel[] value) {
-		assertIsWriteable();
-		extensionPoints = value;
-	}
-
-	/**
-	 * Sets the extensions in this plug-in descriptor.
-	 * This object must not be read-only.
-	 *
-	 * @param value the extensions in this plug-in descriptor.
-	 *		May be <code>null</code>.
-	 */
-	public void setDeclaredExtensions(ExtensionModel[] value) {
-		assertIsWriteable();
-		extensions = value;
-	}
-
-	/**
-	 * Sets the unique identifier of this plug-in model.
-	 * The identifier is a non-empty string and is unique 
-	 * within the plug-in registry.
-	 * This object must not be read-only.
-	 *
-	 * @param value the unique identifier of the plug-in model (e.g. <code>"com.example"</code>).
-	 *		May be <code>null</code>.
-	 */
-	public void setId(String value) {
-		assertIsWriteable();
-		id = value;
-	}
-
-	/**
-	 * Optimization to replace a non-localized key with its localized value.  Avoids having
-	 * to access resource bundles for further lookups.
-	 * 
-	 * @param value the localized provider name for this model object
-	 */
-	public void setLocalizedProviderName(String value) {
-		providerName = value;
-	}
-
-	/**
-	 * Sets the location of the plug-in manifest file (e.g., <code>plugin.xml</code>)
-	 * which corresponds to this plug-in descriptor.  The location is in the
-	 * form of a URL.
-	 * This object must not be read-only.
-	 *
-	 * @param value the location of this plug-in descriptor.  May be <code>null</code>.
-	 */
-	public void setLocation(String value) {
-		assertIsWriteable();
-		location = value;
-	}
-
-	/**
-	 * Sets the name of the provider who authored this plug-in.
-	 * This object must not be read-only.
-	 *
-	 * @param value name of the provider who authored this plug-in.
-	 *		May be <code>null</code>.
-	 */
-	public void setProviderName(String value) {
-		assertIsWriteable();
-		providerName = value;
-	}
-
-	/**
-	 * Sets the registry with which this plug-in descriptor is associated.
-	 * This object must not be read-only.
-	 *
-	 * @param value the registry with which this plug-in is associated.
-	 *		May be <code>null</code>.
-	 */
-	public void setRegistry(PluginRegistryModel value) {
-		assertIsWriteable();
-		registry = value;
-	}
-
-	/**
-	 * Sets the prerequisites of this plug-in.
-	 * This object must not be read-only.
-	 *
-	 * @param value the prerequisites of this plug-in.  May be <code>null</code>.
-	 */
-	public void setRequires(PluginPrerequisiteModel[] value) {
-		assertIsWriteable();
-		requires = value;
-	}
-
-	/**
-	 * Sets the libraries configured for this plug-in.
-	 * This object must not be read-only.
-	 *
-	 * @param value the libraries configured for this plug-in.  May be <code>null</code>.
-	 */
-	public void setRuntime(LibraryModel[] value) {
-		assertIsWriteable();
-		runtime = value;
-	}
-
-	/**
-	 * Sets the version name of this plug-in.  The version number
-	 * is canonicalized.
-	 * This object must not be read-only.
-	 *
-	 * @param value the version name of this plug-in.
-	 *		May be <code>null</code>.
-	 */
-	public void setVersion(String value) {
-		assertIsWriteable();
-		version = new PluginVersionIdentifier(value).toString();
-	}
-
-	/**
-	 * Returns the manifest schema version of this plug-in. The version number is
-	 * canonicalized.
-	 * <p>
-	 * The manifest schema version indicates which shape of plug-in manifest this is.
-	 * This was introduced in 3.0; plug-ins created prior to then did not explicitly
-	 * declare a manifest schema version.
-	 * </p> 
-	 *
-	 * @return the manifest schema version of this plug-in.
-	 *		May be <code>null</code>.
-	 * @since 3.0
-	 */
-	public String getSchemaVersion() {
-		return schemaVersion;
-	}
-
-	/**
-	 * Sets the manifest schema version of this plug-in. The version number is
-	 * canonicalized. This object must not be read-only.
-	 * <p>
-	 * The manifest schema version indicates which shape of plug-in manifest this is.
-	 * This was introduced in 3.0; plug-ins created prior to then did not explicitly
-	 * declare a manifest schema version.
-	 * </p> 
-	 *
-	 * @param value the manifest schema version of this plug-in.
-	 *		May be <code>null</code>.
-	 * @since 3.0
-	 */
-	public void setSchemaVersion(String value) {
-		assertIsWriteable();
-		if (value == null)
-			schemaVersion = null;
-		else
-			schemaVersion = new PluginVersionIdentifier(value).toString();
-	}
-
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/PluginModelObject.java b/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/PluginModelObject.java
deleted file mode 100644
index 401675d..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/PluginModelObject.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.model;
-
-import org.eclipse.core.runtime.Assert;
-
-/**
- * An object which has the general characteristics of all elements
- * in a plug-in manifest.
- * <p>
- * This class may be subclassed.
- * </p>
- * @deprecated In Eclipse 3.0 the runtime was refactored and all 
- * non-essential elements removed.  This class provides facilities primarily intended
- * for tooling.  As such it has been removed and no directly substitutable API provided.
- */
-
-public abstract class PluginModelObject {
-
-	// DTD properties (included in plug-in manifest)
-	private String name = null;
-
-	// transient properties (not included in plug-in manifest)
-	private int flags = 0;
-	// the last bit is a read-only flag
-	// IMPORTANT: One bit in the "flags" integer is used to store the 
-	// read-only flag and the other bits are used to store an integer value
-	// which can be from -1 to (2**31) - 1. To help with the bit masking, the integer
-	// value stored in "flags" is (value + 1). This means that a "flags" value
-	// of 0 will NOT be marked as read-only and will return -1 for the start line value.
-	static final int M_READ_ONLY = 0x80000000;
-
-	/**
-	 * Checks that this model object is writeable.  A runtime exception
-	 * is thrown if it is not.
-	 */
-	protected void assertIsWriteable() {
-		Assert.isTrue(!isReadOnly(), "Model is read-only"); //$NON-NLS-1$
-	}
-
-	/**
-	 * Returns the name of this element.
-	 * 
-	 * @return the name of this element or <code>null</code>
-	 */
-	public String getName() {
-		return name;
-	}
-
-	/**
-	 * Return the line number for the start tag for this plug-in object. This
-	 * is the line number of the element declaration from the plug-in manifest file.
-	 * 
-	 * @return the line number of the start tag for this object
-	 */
-	public int getStartLine() {
-		return (flags & ~M_READ_ONLY) - 1;
-	}
-
-	/**
-	 * Returns whether or not this model object is read-only.
-	 * 
-	 * @return <code>true</code> if this model object is read-only,
-	 *		<code>false</code> otherwise
-	 * @see #markReadOnly()
-	 */
-	public boolean isReadOnly() {
-		return (flags & M_READ_ONLY) == M_READ_ONLY;
-	}
-
-	/**
-	 * Sets this model object and all of its descendents to be read-only.
-	 * Subclasses may extend this implementation.
-	 *
-	 * @see #isReadOnly()
-	 */
-	public void markReadOnly() {
-		flags |= M_READ_ONLY;
-	}
-
-	/**
-	 * Optimization to replace a non-localized key with its localized value.  Avoids having
-	 * to access resource bundles for further lookups.
-	 * 
-	 * @param value the localized name of this model object
-	 */
-	public void setLocalizedName(String value) {
-		name = value;
-	}
-
-	/**
-	 * Sets the name of this element.
-	 * 
-	 * @param value the new name of this element.  May be <code>null</code>.
-	 */
-	public void setName(String value) {
-		assertIsWriteable();
-		name = value;
-	}
-
-	/**
-	 * Set the line number for the start tag for this plug-in object. This is the
-	 * line number for the element declaration from the plug-in manifest file.
-	 * This value can only be set once, subsequent calls to this method will be
-	 * ignored.
-	 * 
-	 * @param lineNumber the line number of this object's declaration in the file
-	 */
-	public void setStartLine(int lineNumber) {
-		if (getStartLine() == -1)
-			flags = (lineNumber + 1) | (flags & M_READ_ONLY);
-	}
-
-	/**
-	 * Return a string representation of this object. This value is not to be relied
-	 * on and can change at any time. To be used for debugging purposes only.
-	 * 
-	 * @see java.lang.Object#toString()
-	 */
-	public String toString() {
-		return this.getClass() + "(" + getName() + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/PluginPrerequisiteModel.java b/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/PluginPrerequisiteModel.java
deleted file mode 100644
index 17f5210..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/PluginPrerequisiteModel.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.model;
-
-import org.eclipse.core.runtime.Assert;
-
-/**
- * An object which represents the relationship between a plug-in and a
- * prerequisite plug-in in the dependent's plug-in manifest.
- * <p>
- * This class may be instantiated, or further subclassed.
- * </p>
- * @deprecated In Eclipse 3.0 the runtime was refactored and all 
- * non-essential elements removed.  This class provides facilities primarily intended
- * for tooling.  As such it has been removed and no directly substitutable API provided.
- */
-public class PluginPrerequisiteModel extends PluginModelObject {
-
-	public static final byte PREREQ_MATCH_UNSPECIFIED = 0;
-	public static final byte PREREQ_MATCH_PERFECT = 1;
-	public static final byte PREREQ_MATCH_EQUIVALENT = 2;
-	public static final byte PREREQ_MATCH_COMPATIBLE = 3;
-	public static final byte PREREQ_MATCH_GREATER_OR_EQUAL = 4;
-
-	// DTD properties (included in plug-in manifest)
-	private String plugin = null;
-	private String version = null;
-	private byte match = PREREQ_MATCH_UNSPECIFIED;
-	private boolean export = false;
-	private String resolvedVersion = null;
-	private boolean optional = false;
-
-	/**
-	 * Creates a new plug-in prerequisite model in which all fields
-	 * are <code>null</code>.
-	 */
-	public PluginPrerequisiteModel() {
-		super();
-	}
-
-	/**
-	 * Returns whether or not the code in this pre-requisite is exported.
-	 *
-	 * @return whether or not the code in this pre-requisite is exported
-	 */
-	public boolean getExport() {
-		return export;
-	}
-
-	/**
-	 * Returns whether or not this pre-requisite requires an exact match.
-	 *
-	 * @return whether or not this pre-requisite requires an exact match
-	 * @deprecated - use getMatchByte
-	 */
-	public boolean getMatch() {
-		return (match == PREREQ_MATCH_EQUIVALENT);
-	}
-
-	/**
-	 * Returns a byte code indicating the type of match this pre-requisite requires.
-	 * The byte code can be any one of the following:
-	 * PREREQ_MATCH_UNSPECIFIED			initial value
-	 * PREREQ_MATCH_PERFECT				perfectly equal match
-	 * PREREQ_MATCH_EQUIVALENT			equivalent match
-	 * PREREQ_MATCH_COMPATIBLE			compatible match
-	 * PREREQ_MATCH_GREATER_OR_EQUAL	greater than or equal to match
-	 *
-	 * @return a byte code indicating the type of match this pre-requisite requires
-	 * @since 2.0
-	 */
-	public byte getMatchByte() {
-		return match;
-	}
-
-	/**
-	 * Returns whether this pre-requisite is optional.
-	 *
-	 * @return whether this pre-requisite is optional
-	 */
-	public boolean getOptional() {
-		return optional;
-	}
-
-	/**
-	 * Returns the plug-in identifier of the prerequisite plug-in.
-	 * 
-	 * @return the plug-in identifier or <code>null</code>
-	 */
-	public String getPlugin() {
-		return plugin;
-	}
-
-	/**
-	 * Returns the resolved version of the prerequisite plug-in.  The
-	 * returned value is in the format specified by <code>PluginVersionIdentifier</code>.
-	 *
-	 * @return the version of the prerequisite plug-in
-	 * @see org.eclipse.core.runtime.PluginVersionIdentifier
-	 */
-	public String getResolvedVersion() {
-		return resolvedVersion;
-	}
-
-	/**
-	 * Returns the version name of this plug-in.
-	 *
-	 * @return the version name of this plug-in or <code>null</code>
-	 */
-	public String getVersion() {
-		return version;
-	}
-
-	/**
-	 * Sets whether or not the code in this pre-requisite is exported.
-	 * This object must not be read-only.
-	 *
-	 * @param value whether or not the code in this pre-requisite is exported
-	 */
-	public void setExport(boolean value) {
-		assertIsWriteable();
-		export = value;
-	}
-
-	/**
-	 * Sets whether or not this pre-requisite requires an exact match.
-	 * This object must not be read-only.
-	 *
-	 * @param value whether or not this pre-requisite requires an exact match
-	 * @deprecated use setMatchByte
-	 */
-	public void setMatch(boolean value) {
-		assertIsWriteable();
-		if (value) {
-			setMatchByte(PREREQ_MATCH_EQUIVALENT);
-		} else {
-			setMatchByte(PREREQ_MATCH_COMPATIBLE);
-		}
-	}
-
-	/**
-	 * Sets whether or not this pre-requisite requires an exact match.
-	 * This object must not be read-only.
-	 *
-	 * @param value whether or not this pre-requisite requires an exact match
-	 * @since 2.0
-	 */
-	public void setMatchByte(byte value) {
-		assertIsWriteable();
-		Assert.isTrue((value == PREREQ_MATCH_PERFECT) || (value == PREREQ_MATCH_EQUIVALENT) || (value == PREREQ_MATCH_COMPATIBLE) || (value == PREREQ_MATCH_GREATER_OR_EQUAL));
-		match = value;
-	}
-
-	/**
-	 * Sets whether this pre-requisite is optional.
-	 * This object must not be read-only.
-	 *
-	 * @param value whether this pre-requisite is optional
-	 */
-	public void setOptional(boolean value) {
-		assertIsWriteable();
-		optional = value;
-	}
-
-	/**
-	 * Sets the plug-in identifier of this prerequisite plug-in.
-	 * This object must not be read-only.
-	 * 
-	 * @param value the prerequisite plug-in identifier.  May be <code>null</code>.
-	 */
-	public void setPlugin(String value) {
-		assertIsWriteable();
-		plugin = value;
-	}
-
-	/**
-	 * Sets the resolved version of the prerequisite plug-in.  The
-	 * given value is in the format specified by <code>PluginVersionIdentifier</code>.
-	 *
-	 * @param value the version of the prerequisite plug-in
-	 * @see org.eclipse.core.runtime.PluginVersionIdentifier
-	 */
-	public void setResolvedVersion(String value) {
-		assertIsWriteable();
-		resolvedVersion = value;
-	}
-
-	/**
-	 * Sets the version name of this plug-in prerequisite.
-	 * This object must not be read-only.
-	 *
-	 * @param value the version name of this plug-in prerequisite.
-	 *		May be <code>null</code>.
-	 */
-	public void setVersion(String value) {
-		assertIsWriteable();
-		version = value;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/PluginRegistryModel.java b/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/PluginRegistryModel.java
deleted file mode 100644
index a027781..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/PluginRegistryModel.java
+++ /dev/null
@@ -1,341 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.model;
-
-import java.net.URL;
-import java.util.HashMap;
-import java.util.List;
-import org.eclipse.core.internal.model.PluginMap;
-import org.eclipse.core.internal.model.RegistryResolver;
-import org.eclipse.core.internal.plugins.InternalPlatform;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IStatus;
-
-/**
- * A container for a collection of plug-in descriptors.
- * <p>
- * This class may be instantiated, or further subclassed.
- * </p>
- * @deprecated In Eclipse 3.0 the runtime was refactored and all 
- * non-essential elements removed.  This class provides facilities primarily intended
- * for tooling.  As such it has been removed and no directly substitutable API provided.
- */
-public class PluginRegistryModel {
-
-	// transient properties (not included in plug-in manifest)
-	protected PluginMap plugins = new PluginMap(new HashMap(30), false, true);
-	protected PluginMap fragments = new PluginMap(new HashMap(30), false, true);
-	private boolean readOnly = false;
-	private boolean resolved = false;
-
-	/**
-	 * Creates a new plug-in registry model which contains no plug-ins.
-	 */
-	public PluginRegistryModel() {
-		super();
-	}
-
-	/**
-	 * Adds the specified plug-in fragment to this registry.  An existing fragment
-	 * with the same unique id and version is replaced by the new
-	 * value.  
-	 *
-	 * @param fragment the plug-in fragment to add
-	 */
-	public void addFragment(PluginFragmentModel fragment) {
-		assertIsWriteable();
-		fragments.add(fragment);
-	}
-
-	/**
-	 * Adds the specified plug-in to this registry.  An existing plug-in
-	 * with the same unique id and version is replaced by the new
-	 * value.  
-	 *
-	 * @param plugin the plug-in descriptor to add
-	 */
-	public void addPlugin(PluginDescriptorModel plugin) {
-		assertIsWriteable();
-		plugins.add(plugin);
-	}
-
-	/**
-	 * Checks that this model object is writeable.  A runtime exception
-	 * is thrown if it is not.
-	 */
-	protected void assertIsWriteable() {
-		Assert.isTrue(!isReadOnly(), "Model is read-only"); //$NON-NLS-1$
-	}
-
-	/**
-	 * Returns the plug-in fragment with the given identifier
-	 * in this plug-in registry, or <code>null</code> if there is no such
-	 * fragment.  If there are multiple versions of the identified fragment,
-	 * one will be non-deterministically chosen and returned.  
-	 *
-	 * @param id the unique identifier of the plug-in fragment
-	 *		(e.g. <code>"com.example.acme"</code>).
-	 * @return the plug-in fragment, or <code>null</code>
-	 */
-	public PluginFragmentModel getFragment(String id) {
-		return (PluginFragmentModel) fragments.getAny(id);
-	}
-
-	/**
-	 * Returns the identified plug-in fragment or <code>null</code> if
-	 * the fragment does not exist.
-	 *
-	 * @param id the unique identifier of the plug-in fragment
-	 * @param version fragment version identifier. If <code>null</code> is
-	 * specified, a non-deterministically chosen version of the identified fragment
-	 * (if any) will be returned
-	 * @return the matching fragment in this registry, or <code>null</code>
-	 */
-	public PluginFragmentModel getFragment(String id, String version) {
-		return (PluginFragmentModel) fragments.get(id, version);
-	}
-
-	/**
-	 * Returns the list of plug-in fragments managed by this registry.
-	 *
-	 * @return the fragments in this registry
-	 */
-	public PluginFragmentModel[] getFragments() {
-		PluginFragmentModel[] result = new PluginFragmentModel[fragments.size()];
-		fragments.copyToArray(result);
-		return result;
-	}
-
-	/**
-	 * Returns all versions of the identified plug-in fragment
-	 * known to this plug-in registry.
-	 * Returns an empty array if there are no fragments
-	 * with the specified identifier.
-	 *
-	 * @param id the unique identifier of the plug-in fragment
-	 *		(e.g. <code>"org.eclipse.core.resources"</code>).
-	 * @return the fragments known to this plug-in registry with the given id
-	 */
-	public PluginFragmentModel[] getFragments(String id) {
-		List versions = fragments.getVersions(id);
-		if (versions == null || versions.isEmpty())
-			return new PluginFragmentModel[0];
-		return (PluginFragmentModel[]) versions.toArray(new PluginFragmentModel[versions.size()]);
-	}
-
-	/**
-	 * Returns the plug-in descriptor with the given plug-in identifier
-	 * in this plug-in registry, or <code>null</code> if there is no such
-	 * plug-in.  If there are multiple versions of the identified plug-in,
-	 * one will be non-deterministically chosen and returned.  
-	 *
-	 * @param pluginId the unique identifier of the plug-in 
-	 *		(e.g. <code>"com.example.acme"</code>).
-	 * @return the plug-in descriptor, or <code>null</code>
-	 */
-	public PluginDescriptorModel getPlugin(String pluginId) {
-		return (PluginDescriptorModel) plugins.getAny(pluginId);
-	}
-
-	/**
-	 * Returns the identified plug-in or <code>null</code> if
-	 * the plug-in does not exist. 
-	 *
-	 * @param pluginId the unique identifier of the plug-in 
-	 *		(e.g. <code>"org.eclipse.core.resources"</code>)
-	 * @param version plug-in version identifier. If <code>null</code> is specified,
-	 * a non-deterministically chosen version of the identified plug-in (if any)
-	 * will be returned
-	 * @return the matching plug-in in this registry or <code>null</code>
-	 */
-	public PluginDescriptorModel getPlugin(String pluginId, String version) {
-		PluginDescriptorModel[] list = getPlugins(pluginId);
-		if (list == null || list.length == 0)
-			return null;
-		if (version == null)
-			// Just return the first one in the list (random)
-			return list[0];
-
-		for (int i = 0; i < list.length; i++) {
-			PluginDescriptorModel element = list[i];
-			if (element.getVersion().equals(version))
-				return element;
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the list of plug-ins managed by this registry.
-	 *
-	 * @return the plug-ins in this registry
-	 */
-	public PluginDescriptorModel[] getPlugins() {
-		PluginDescriptorModel[] result = new PluginDescriptorModel[plugins.size()];
-		plugins.copyToArray(result);
-		return result;
-	}
-
-	/**
-	 * Returns all versions of the identified plug-in descriptor
-	 * known to this plug-in registry.
-	 * Returns an empty array if there are no plug-ins
-	 * with the specified identifier.
-	 *
-	 * @param pluginId the unique identifier of the plug-in 
-	 *		(e.g. <code>"org.eclipse.core.resources"</code>).
-	 * @return the plug-in descriptors known to this plug-in registry
-	 */
-	public PluginDescriptorModel[] getPlugins(String pluginId) {
-		List versions = plugins.getVersions(pluginId);
-		if (versions == null || versions.isEmpty())
-			return new PluginDescriptorModel[0];
-		return (PluginDescriptorModel[]) versions.toArray(new PluginDescriptorModel[versions.size()]);
-
-	}
-
-	/**
-	 * Returns whether or not this model object is read-only.
-	 * 
-	 * @return <code>true</code> if this model object is read-only,
-	 *		<code>false</code> otherwise
-	 * @see #markReadOnly()
-	 */
-	public boolean isReadOnly() {
-		return readOnly;
-	}
-
-	/**
-	 * Returns whether or not this model object has been resolved.
-	 * 
-	 * @return <code>true</code> if this model object has been resolved,
-	 *		<code>false</code> otherwise
-	 */
-	public boolean isResolved() {
-		return resolved;
-	}
-
-	/**
-	 * Sets this model object and all of its descendents to be read-only.
-	 * Subclasses may extend this implementation.
-	 *
-	 * @see #isReadOnly()
-	 */
-	public void markReadOnly() {
-		readOnly = true;
-		plugins.markReadOnly();
-		fragments.markReadOnly();
-	}
-
-	/**
-	 * Sets this model object to be resolved.
-	 */
-	public void markResolved() {
-		resolved = true;
-	}
-
-	/**
-	 * Removes the fragment with id and version if it exists in this registry.
-	 * This method has no effect if a fragment with the given id and version 
-	 * cannot be found.
-	 *
-	 * @param id the unique identifier of the fragment to remove
-	 * @param version the version of the fragment to remove
-	 */
-	public void removeFragment(String id, String version) {
-		assertIsWriteable();
-		fragments.remove(id, version);
-	}
-
-	/**
-	 * Removes all versions of the identified plug-in fragment from this registry.
-	 * This method has no effect if such a fragment cannot be found.
-	 *
-	 * @param id the unique identifier of the fragments to remove
-	 */
-	public void removeFragments(String id) {
-		assertIsWriteable();
-		fragments.removeVersions(id);
-	}
-
-	/**
-	 * Removes the plug-in with id and version if it exists in this registry.
-	 * This method has no effect if a plug-in with the given id and version 
-	 * cannot be found.
-	 *
-	 * @param pluginId the unique identifier of the plug-in to remove
-	 * @param version the version of the plug-in to remove
-	 */
-	public void removePlugin(String pluginId, String version) {
-		assertIsWriteable();
-		plugins.remove(pluginId, version);
-	}
-
-	/**
-	 * Removes all versions of the given plug-in from this registry.
-	 * This method has no effect if such a plug-in cannot be found.
-	 *
-	 * @param pluginId the unique identifier of the plug-ins to remove
-	 */
-	public void removePlugins(String pluginId) {
-		assertIsWriteable();
-		plugins.removeVersions(pluginId);
-	}
-
-	/**
-	 * Runs a resolve through the entire registry.  This resolve will
-	 * mark any PluginDescriptorModels which do not have access to all
-	 * of their prerequisites as disabled.  Prerequisites which cause
-	 * cyclical dependencies will be marked as disabled.
-	 * <p>
-	 * If the parameter trimDisabledPlugins is set to true, all PluginDescriptorModels
-	 * which are labelled as disabled will be removed from the registry.
-	 * </p><p>
-	 * If the paramter doCrossLinking is set to true, links will be
-	 * created between ExtensionPointModels and their corresponding
-	 * ExtensionModels.  Not that these links will include disabled
-	 * plugins if trimDisabledPlugins was set to false.
-	 * </p>
-	 * @param trimDisabledPlugins if true, remove all disabled plugins
-	 * from the registry (recommended value = true)
-	 * @param doCrossLinking if true, link all ExtensionModels in the registry
-	 * to their corresponding ExtensionPointModel (recommended value = true).
-	 * @return a status object describing the result of resolving.
-	 */
-	public IStatus resolve(boolean trimDisabledPlugins, boolean doCrossLinking) {
-		RegistryResolver resolver = new RegistryResolver();
-		resolver.setTrimPlugins(trimDisabledPlugins);
-		resolver.setCrossLink(doCrossLinking);
-		return resolver.resolve(this);
-	}
-
-	/**
-	 * Returns a plug-in registry containing all of the plug-ins discovered
-	 * on the given plug-in path.  Any problems encountered are added to
-	 * the status managed by the supplied factory.
-	 * <p>
-	 * The given plug-in path is the list of locations in which to look for plug-ins.
-	 * If an entry identifies a directory (i.e., ends in a '/'), this method
-	 * attempts to scan all sub-directories for plug-ins.  Alternatively, an
-	 * entry may identify a particular plug-in manifest (<code>plugin.xml</code>) file.
-	 * </p>
-	 * <p>
-	 * <b>Note:</b> this method does not affect the running platform.  It is intended
-	 * for introspecting installed plug-ins on this and other platforms.  The returned
-	 * registry is <b>not</b> the same as the platform's registry.
-	 * </p>
-	 * @param pluginPath the list of locations in which to look for plug-ins
-	 * @param factory the factory to use to create runtime model objects
-	 * @return the registry of parsed plug-ins
-	 */
-	public static PluginRegistryModel parsePlugins(URL[] pluginPath, Factory factory) {
-		return InternalPlatform.parsePlugins(pluginPath, factory, false);
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/URLModel.java b/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/URLModel.java
deleted file mode 100644
index 31f8b8c..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/URLModel.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.model;
-
-/**
- * An object which represents a named URL in a component or configuration
- * manifest.
- * <p>
- * This class may be instantiated and further subclassed.
- * </p>
- * @deprecated In Eclipse 3.0 the runtime was refactored and all 
- * non-essential elements removed.  This class provides facilities primarily intended
- * for tooling.  As such it has been removed and no directly substitutable API provided.
- */
-
-public class URLModel extends PluginModelObject {
-	// DTD properties (included in install manifest)
-	private String url = null;
-
-	/**
-	 * Returns the URL specification.
-	 *
-	 * @return the URL specification or <code>null</code>.
-	 */
-	public String getURL() {
-		return url;
-	}
-
-	/**
-	 * Sets the URL specification.
-	 * This object must not be read-only.
-	 *
-	 * @param value the URL specification.
-	 *		May be <code>null</code>.
-	 */
-	public void setURL(String value) {
-		assertIsWriteable();
-		url = value;
-	}
-
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/package.html b/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/package.html
deleted file mode 100644
index a1289bb..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-model/org/eclipse/core/runtime/model/package.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Provides core support for the modeling plug-ins and the plug-in registry.
-<h2>Package Specification</h2>
-This package specifies the runtime API related to modeling plug-ins and the plug-in
-registry.  The types provided here are typically data containers and have very little 
-behaviour other than setters and getters.  They are primarily intended for clients writing
-tools which manipulate/change registry entries as part of their normal work.  
-
-</body>
-</html>
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/compatibility/PluginActivator.java b/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/compatibility/PluginActivator.java
deleted file mode 100644
index 1363549..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/compatibility/PluginActivator.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.compatibility;
-
-import org.eclipse.core.internal.plugins.PluginDescriptor;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Plugin;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class PluginActivator implements BundleActivator {
-	private Plugin plugin;
-
-	public PluginActivator() {
-		super();
-	}
-
-	public void start(BundleContext context) throws Exception {
-		PluginDescriptor pd = (PluginDescriptor) Platform.getPluginRegistry().getPluginDescriptor(context.getBundle().getSymbolicName());
-		plugin = pd.getPlugin();
-		try {
-			plugin.start(context);
-			plugin.startup();
-		} catch(Exception e) {
-			try {
-				plugin.shutdown();
-				plugin.stop(context);
-				pd.markAsDeactivated();
-			} catch(Exception e1) {
-				// We are mostly interested in the original exception 
-				e1.printStackTrace();
-			}
-			throw e;
-		}
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		plugin.shutdown();
-		plugin.stop(context);
-		((PluginDescriptor) plugin.getDescriptor()).doPluginDeactivation();
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/CompatibilityActivator.java b/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/CompatibilityActivator.java
deleted file mode 100644
index e574445..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/CompatibilityActivator.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.plugins;
-
-import org.eclipse.core.internal.runtime.CompatibilityHelper;
-import org.eclipse.core.internal.runtime.InternalPlatform;
-import org.eclipse.core.runtime.IPluginDescriptor;
-import org.eclipse.core.runtime.Platform;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class CompatibilityActivator implements BundleActivator {
-	public void start(BundleContext context) throws Exception {
-		IPluginDescriptor descriptor = CompatibilityHelper.getPluginDescriptor(Platform.PI_RUNTIME);
-		CompatibilityHelper.setPlugin(descriptor, InternalPlatform.getDefault().getRuntimeInstance());
-		CompatibilityHelper.setActive(descriptor);
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		IPluginDescriptor descriptor = CompatibilityHelper.getPluginDescriptor(Platform.PI_RUNTIME);
-		CompatibilityHelper.setPlugin(descriptor, null);
-		((PluginRegistry) org.eclipse.core.internal.plugins.InternalPlatform.getPluginRegistry()).close();
-		CompatibilityHelper.nullCompatibility();
-	}
-
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/DefaultPlugin.java b/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/DefaultPlugin.java
deleted file mode 100644
index c09953d..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/DefaultPlugin.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.plugins;
-
-/**
- * Dummy plugin runtime class implementation
- */
-import org.eclipse.core.runtime.IPluginDescriptor;
-import org.eclipse.core.runtime.Plugin;
-
-public class DefaultPlugin extends Plugin {
-	public DefaultPlugin(IPluginDescriptor descriptor) {
-		super(descriptor);
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/DevClassPathHelper.java b/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/DevClassPathHelper.java
deleted file mode 100644
index 33af604..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/DevClassPathHelper.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.plugins;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.*;
-
-public class DevClassPathHelper {
-	static protected boolean inDevelopmentMode = false;
-	static protected String[] devDefaultClasspath;
-	static protected Properties devProperties = null;
-
-	static {
-		// Check the osgi.dev property to see if dev classpath entries have been defined.
-		String osgiDev = System.getProperty("osgi.dev"); //$NON-NLS-1$
-		if (osgiDev != null) {
-			try {
-				inDevelopmentMode = true;
-				URL location = new URL(osgiDev);
-				devProperties = load(location);
-				devDefaultClasspath = getArrayFromList(devProperties.getProperty("*")); //$NON-NLS-1$
-			} catch (MalformedURLException e) {
-				devDefaultClasspath = getArrayFromList(osgiDev);
-			}
-		}
-	}
-
-	public static String[] getDevClassPath(String id) {
-		String[] result = null;
-		if (id != null && devProperties != null) {
-			String entry = devProperties.getProperty(id);
-			if (entry != null)
-				result = getArrayFromList(entry);
-		}
-		if (result == null)
-			result = devDefaultClasspath;
-		return result;
-	}
-
-	/**
-	 * Returns the result of converting a list of comma-separated tokens into an array
-	 * 
-	 * @return the array of string tokens
-	 * @param prop the initial comma-separated string
-	 */
-	public static String[] getArrayFromList(String prop) {
-		if (prop == null || prop.trim().equals("")) //$NON-NLS-1$
-			return new String[0];
-		Vector list = new Vector();
-		StringTokenizer tokens = new StringTokenizer(prop, ","); //$NON-NLS-1$
-		while (tokens.hasMoreTokens()) {
-			String token = tokens.nextToken().trim();
-			if (!token.equals("")) //$NON-NLS-1$
-				list.addElement(token);
-		}
-		return list.isEmpty() ? new String[0] : (String[]) list.toArray(new String[list.size()]);
-	}
-
-	public static boolean inDevelopmentMode() {
-		return inDevelopmentMode;
-	}
-
-	/*
-	 * Load the given properties file
-	 */
-	private static Properties load(URL url) {
-		Properties props = new Properties();
-		try {
-			InputStream is = null;
-			try {
-				is = url.openStream();
-				props.load(is);
-			} finally {
-				if (is != null)
-					is.close();
-			}
-		} catch (IOException e) {
-			// TODO consider logging here
-		}
-		return props;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/InternalPlatform.java b/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/InternalPlatform.java
deleted file mode 100644
index b197f69..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/InternalPlatform.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.plugins;
-
-import java.net.URL;
-import org.eclipse.core.internal.model.RegistryLoader;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.model.Factory;
-import org.eclipse.core.runtime.model.PluginRegistryModel;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleException;
-
-
-/**
- * @deprecated Marking as deprecated to remove the warnings
- */
-public class InternalPlatform {
-	private static IPluginRegistry registry = null;
-
-	public static IPluginRegistry getPluginRegistry() {
-		if (registry == null) {
-			registry = new PluginRegistry();
-		}
-		return registry;
-	}
-
-	public static IPluginDescriptor getPluginDescriptor(String pluginId) {
-		return getPluginRegistry().getPluginDescriptor(pluginId);
-	}
-
-	public static void installPlugins(URL[] installURLs) throws CoreException {
-		String message = Policy.bind("platform.errorInstalling"); //$NON-NLS-1$
-		MultiStatus result = new MultiStatus(Platform.PI_RUNTIME, 0, message, null);
-		BundleContext context = org.eclipse.core.internal.runtime.InternalPlatform.getDefault().getBundleContext();
-		for (int i = 0; i < installURLs.length; i++) {
-			try {
-				context.installBundle(installURLs[i].toExternalForm());
-			} catch (BundleException e) {
-				IStatus status = new Status(IStatus.ERROR, Platform.PI_RUNTIME, 0, org.eclipse.core.internal.plugins.Policy.bind("platform.cannotInstallPlugin", installURLs[i].toExternalForm()), e); //$NON-NLS-1$
-				result.merge(status);
-			}
-		}
-		if (!result.isOK())
-			throw new CoreException(result);
-	}
-
-
-	/**
-	 * Convenience method equivalent to parsePlugins(URL[], Factory, boolean) where debug is set to false.
-	 * @see #parsePlugins(URL[], Factory, boolean)
-	 */
-	public static PluginRegistryModel parsePlugins(URL[] pluginPath, Factory factory) {
-		return parsePlugins(pluginPath, factory, false);
-	}
-
-	/**
-	 * Returns a plug-in registry containing all of the plug-ins discovered
-	 * on the given plug-in path.  Any problems encountered are added to
-	 * the status managed by the supplied factory.
-	 * <p>
-	 * The given plug-in path is the list of locations in which to look for plug-ins.
-	 * If an entry identifies a directory (i.e., ends in a '/'), this method
-	 * attempts to scan all sub-directories for plug-ins.  Alternatively, an
-	 * entry may identify a particular plug-in manifest (<code>plugin.xml</code>) file.
-	 * </p>
-	 * <p>
-	 * <b>Note:</b> this method does not affect the running platform.  It is intended
-	 * for introspecting installed plug-ins on this and other platforms.  The returned
-	 * registry is <b>not</b> the same as the platform's registry.
-	 * </p>
-	 *
-	 * @param pluginPath the list of locations in which to look for plug-ins
-	 * @param factory the factory to use to create runtime model objects
-	 * @param debug turn the debug information on or off
-	 * @return the registry of parsed plug-ins
-	 */
-	public synchronized static PluginRegistryModel parsePlugins(URL[] pluginPath, Factory factory, boolean debug) {
-		return RegistryLoader.parseRegistry(pluginPath, factory, debug);
-	}
-
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/Library.java b/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/Library.java
deleted file mode 100644
index 12b70bc..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/Library.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.plugins;
-
-import org.eclipse.core.runtime.*;
-
-public class Library implements ILibrary {
-	public String path;
-
-	public Library(String path) {
-		this.path = path;
-	}
-
-	public String[] getContentFilters() {
-		return null;
-	}
-
-	public IPath getPath() {
-		return new Path(path);
-	}
-
-	public String getType() {
-		return ILibrary.CODE;
-	}
-
-	public boolean isExported() {
-		return true;
-	}
-
-	public boolean isFullyExported() {
-		return true;
-	}
-
-	public String[] getPackagePrefixes() {
-		return null;
-	}
-
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/PluginClassLoader.java b/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/PluginClassLoader.java
deleted file mode 100644
index d0f6ca5..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/PluginClassLoader.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.plugins;
-
-import java.io.IOException;
-import java.net.*;
-import org.eclipse.core.internal.runtime.InternalPlatform;
-import org.eclipse.core.runtime.ILibrary;
-import org.eclipse.core.runtime.Platform;
-import org.osgi.framework.Bundle;
-
-public class PluginClassLoader extends URLClassLoader {
-	private Bundle bundle; //We should be able to get rid of this field, since the info is in the descriptor
-	private PluginDescriptor descriptor;
-
-	PluginClassLoader(PluginDescriptor descriptor) {
-		super(computeURLs(descriptor));
-		this.descriptor = descriptor;
-		this.bundle = InternalPlatform.getDefault().getBundle(descriptor.getUniqueIdentifier());
-		if (bundle == null)
-			throw new IllegalArgumentException();
-	}
-
-	private static URL[] computeURLs(PluginDescriptor descriptor) {
-		Bundle bundle = InternalPlatform.getDefault().getBundle(descriptor.getUniqueIdentifier());
-		if (bundle == null)
-			throw new IllegalArgumentException();
-
-		ILibrary[] libs = descriptor.getRuntimeLibraries();
-		String[] devPath = computeDevPath(bundle);
-		URL pluginBase = descriptor.getInstallURL();
-		try {
-			pluginBase = Platform.resolve(descriptor.getInstallURL());
-		} catch (IOException e1) {
-			//Ignore
-		}
-
-		URL[] urls = new URL[devPath.length + libs.length];
-		int j = 0;
-		for (int i = 0; i < devPath.length; i++) {
-			try {
-				urls[j++] = new URL(pluginBase, devPath[i]);
-			} catch (MalformedURLException e) {
-				//Ignore the exception
-			}
-		}
-		for (int i = 0; i < libs.length; i++) {
-			try {
-				urls[j++] = new URL(pluginBase, libs[i].getPath().toOSString());
-			} catch (MalformedURLException e) {
-				//Ignore the exception
-			}
-		}
-		return urls;
-	}
-
-	private static String[] computeDevPath(Bundle bundle) {
-		if (!DevClassPathHelper.inDevelopmentMode())
-			return new String[0];
-
-		String pluginId = bundle.getSymbolicName();
-		if (pluginId == null)
-			return new String[0];
-		return DevClassPathHelper.getDevClassPath(pluginId);
-	}
-
-	protected Class findClass(String name) throws ClassNotFoundException {
-		return bundle.loadClass(name); // if no CNFE is thrown, activate the bundle (if needed)
-	}
-
-	public URL findResource(String name) {
-		return bundle.getResource(name);
-	}
-
-	public PluginDescriptor getPluginDescriptor() {
-		return descriptor;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/PluginDescriptor.java b/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/PluginDescriptor.java
deleted file mode 100644
index b2f5ad8..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/PluginDescriptor.java
+++ /dev/null
@@ -1,458 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.core.internal.plugins;
-
-import java.io.IOException;
-import java.lang.reflect.Constructor;
-import java.net.URL;
-import java.util.*;
-import org.eclipse.core.internal.boot.PlatformURLHandler;
-import org.eclipse.core.internal.runtime.*;
-import org.eclipse.core.internal.runtime.InternalPlatform;
-import org.eclipse.core.runtime.*;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.BundleSpecification;
-import org.eclipse.osgi.util.ManifestElement;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-
-
-/**
- * @deprecated Marking as deprecated to remove the warnings
- */
-public class PluginDescriptor implements IPluginDescriptor {
-
-	private static final String PLUGIN_CLASS = "Plugin-Class"; //$NON-NLS-1$
-	protected Plugin pluginObject = null; // plugin object
-	private Bundle bundleOsgi;
-
-	//The three following fields can't be replaced by a test to the bundle state.
-	private boolean active = false; // plugin is active
-	private volatile boolean activePending = false; // being activated
-	private boolean deactivated = false; // plugin deactivated due to startup errors
-	private ResourceBundle resources = null; 
-	private PluginClassLoader classLoader;
-
-	// constants
-	static final String PLUGIN_URL = PlatformURLHandler.PROTOCOL + PlatformURLHandler.PROTOCOL_SEPARATOR + "/" + PlatformURLPluginConnection.PLUGIN + "/"; //$NON-NLS-1$ //$NON-NLS-2$
-	static final String VERSION_SEPARATOR = "_"; //$NON-NLS-1$
-
-	synchronized public void doPluginDeactivation() {
-		pluginObject = null;
-		active = false;
-		activePending = false;
-		deactivated = false;
-	}
-
-	/**
-	 * @see IPluginDescriptor
-	 */
-	public IExtension getExtension(String id) {
-		IExtension[] exts = getExtensions();
-		for (int i = 0; i < exts.length; i++) {
-			if (exts[i].getSimpleIdentifier().equals(id))
-				return exts[i];
-		}
-		return null;
-	}
-
-	/**
-	 * @see IPluginDescriptor
-	 */
-	public IExtensionPoint getExtensionPoint(String extensionPointId) {
-		return InternalPlatform.getDefault().getRegistry().getExtensionPoint(getId(), extensionPointId);
-	}
-
-	/**
-	 * @see IPluginDescriptor
-	 */
-	public IExtensionPoint[] getExtensionPoints() {
-		return InternalPlatform.getDefault().getRegistry().getExtensionPoints(getId());
-	}
-
-	/**
-	 * @see IPluginDescriptor
-	 */
-	public IExtension[] getExtensions() {
-		return org.eclipse.core.internal.runtime.InternalPlatform.getDefault().getRegistry().getExtensions(getId());
-	}
-
-	/**
-	 * @see IPluginDescriptor
-	 */
-	public URL getInstallURL() {
-		try {
-			return new URL(PLUGIN_URL + toString() + '/');
-		} catch (IOException e) {
-			throw new IllegalStateException(); // unchecked
-		}
-	}
-
-	/**
-	 * @see IPluginDescriptor
-	 */
-	public String getLabel() {
-		return (String) bundleOsgi.getHeaders().get(Constants.BUNDLE_NAME);
-	}
-
-	/**
-	 * @see IPluginDescriptor
-	 */
-	public ClassLoader getPluginClassLoader() {
-		synchronized (this) {
-			if (classLoader == null)
-				classLoader = new PluginClassLoader(this);
-		}
-		return classLoader;
-	}
-
-	public PluginRegistry getPluginRegistry() {
-		return (PluginRegistry) org.eclipse.core.internal.plugins.InternalPlatform.getPluginRegistry();
-	}
-
-	/**
-	 * @see IPluginDescriptor
-	 */
-	public String getProviderName() {
-		return (String) bundleOsgi.getHeaders().get(Constants.BUNDLE_VENDOR);
-	}
-
-	/**
-	 * @see IPluginDescriptor
-	 */
-	public ResourceBundle getResourceBundle() throws MissingResourceException {
-		if (resources==null)
-			resources = ResourceTranslator.getResourceBundle(bundleOsgi);
-		return resources;
-	}
-
-	/**
-	 * @see IPluginDescriptor
-	 */
-	public String getResourceString(String value) {
-		return ResourceTranslator.getResourceString(bundleOsgi, value);
-	}
-
-	/**
-	 * @see IPluginDescriptor
-	 */
-	public String getResourceString(String value, ResourceBundle b) {
-		return ResourceTranslator.getResourceString(bundleOsgi, value, b);
-	}
-
-	/**
-	 * @see IPluginDescriptor
-	 */
-	public ILibrary[] getRuntimeLibraries() {
-		Bundle[] allBundles;
-		Bundle[] fragments = InternalPlatform.getDefault().getFragments(bundleOsgi);
-		if (fragments != null) {
-			allBundles = new Bundle[fragments.length + 1];
-			allBundles[0] = bundleOsgi;
-			System.arraycopy(fragments, 0, allBundles, 1, fragments.length);
-		} else
-			allBundles = new Bundle[] {bundleOsgi};
-		ArrayList allLibraries = new ArrayList();
-		// keep track of whether or not we have already added a "." to this classpath
-		boolean addedDot = false;
-		for (int i = 0; i < allBundles.length; i++)
-			try {
-				ManifestElement[] classpathElements = ManifestElement.parseHeader(Constants.BUNDLE_CLASSPATH, (String) allBundles[i].getHeaders("").get(Constants.BUNDLE_CLASSPATH)); //$NON-NLS-1$
-				// if there is no bundle classpath header, then we have to 
-				// add "." to the classpath
-				if (classpathElements == null) {
-					if (addedDot) 
-						continue; 
-					allLibraries.add(new Library(".")); //$NON-NLS-1$
-					addedDot = true;
-				} else
-					for (int j = 0; j < classpathElements.length; j++)
-						allLibraries.add(new Library(classpathElements[j].getValue()));
-			} catch (BundleException e) {
-				//Ignore because by the time we get here the errors will have already been logged.
-			}
-		return (ILibrary[]) allLibraries.toArray(new ILibrary[allLibraries.size()]);
-	}
-
-	/**
-	 * @see IPluginDescriptor
-	 */
-	public String getUniqueIdentifier() {
-		return getId();
-	}
-
-	/**
-	 * @see #toString()
-	 */
-	public static String getUniqueIdentifierFromString(String pluginString) {
-		int ix = pluginString.indexOf(VERSION_SEPARATOR);
-		return ix == -1 ? pluginString : pluginString.substring(0, ix);
-	}
-
-	/**
-	 * @see IPluginDescriptor
-	 */
-	public PluginVersionIdentifier getVersionIdentifier() {
-		String version = (String) bundleOsgi.getHeaders("").get(Constants.BUNDLE_VERSION); //$NON-NLS-1$
-		try {
-			return new PluginVersionIdentifier(version);
-		} catch (Exception e) {
-			return new PluginVersionIdentifier("1.0.0"); //$NON-NLS-1$
-		}
-	}
-
-	/**
-	 * @see #toString()
-	 */
-	public static PluginVersionIdentifier getVersionIdentifierFromString(String pluginString) {
-		return new PluginVersionIdentifier(pluginString);
-	}
-
-	public IPluginPrerequisite[] getPluginPrerequisites() {
-		BundleDescription description = Platform.getPlatformAdmin().getState(false).getBundle(bundleOsgi.getBundleId());
-		BundleSpecification[] specs = description.getRequiredBundles();
-
-		IPluginPrerequisite[] resolvedPrerequisites = new IPluginPrerequisite[specs.length];
-		for (int j = 0; j < specs.length; j++)
-			resolvedPrerequisites[j] = new PluginPrerequisite(specs[j]);
-		return resolvedPrerequisites;
-	}
-
-	/**
-	 * Returns true if the plugin is active or is currently in the process of being 
-	 * activated, and false otherwse.
-	 * NOTE: This method is not synchronized because it is called from within a
-	 * sync block in PluginClassLoader.
-	 */
-	boolean hasActivationStarted() {
-		return activePending || active;
-	}
-
-	/**
-	 * @see IPluginDescriptor
-	 */
-	public synchronized boolean isPluginActivated() {
-		//note that this method is synchronized for good reason.  
-		//During plugin activation, neither true nor false would be valid
-		//return values for this method, so it must block until activation
-		//completes.  For example, returning false during activation
-		//would break the registry shutdown procedure, because a
-		//plugin being activated during shutdown would never be shut down.
-		return bundleOsgi.getState() == Bundle.ACTIVE;
-	}
-
-	/*
-	 * NOTE: This method is not synchronized because it is called from within a
-	 * sync block in PluginClassLoader.
-	 */
-	public boolean isPluginDeactivated() {
-		return deactivated;
-	}
-
-	private void logError(IStatus status) {
-		InternalPlatform.getDefault().getLog(org.eclipse.core.internal.runtime.InternalPlatform.getDefault().getBundleContext().getBundle()).log(status);
-	}
-
-	/**
-	 * Returns <code>true</code> if we should continue with the plugin activation.
-	 */
-	private boolean pluginActivationEnter() throws CoreException {
-		if (deactivated) {
-			// had permanent error on startup
-			String errorMsg = NLS.bind(Messages.plugin_pluginDisabled, getId());
-			throwException(errorMsg, null);
-		}
-		if (active || activePending) {
-			// already up and running 
-			return false;
-		}
-		activePending = true;
-		// go ahead and try to activate
-		return true;
-	}
-
-	private void pluginActivationExit(boolean errorExit) {
-		if (errorExit) {
-			active = false;
-			deactivated = true;
-		} else
-			active = true;
-		// we are done with the activation
-		activePending = false;
-	}
-
-	private void throwException(String message, Throwable exception) throws CoreException {
-		IStatus status = new Status(IStatus.ERROR, Platform.PI_RUNTIME, Platform.PLUGIN_ERROR, message, exception);
-		logError(status);
-		throw new CoreException(status);
-	}
-
-	/**
-	 * @see #getUniqueIdentifierFromString(String)
-	 * @see #getVersionIdentifierFromString(String)
-	 */
-	public String toString() {
-		return getUniqueIdentifier() + VERSION_SEPARATOR + getVersionIdentifier().toString();
-	}
-
-	/**
-	 * @see IPluginDescriptor
-	 */
-	public final URL find(IPath path) {
-		URL result = FindSupport.find(bundleOsgi, path);
-		if (result != null)
-			try {
-				result = Platform.resolve(result);
-			} catch (IOException e) {
-				// if the URL cannot be resolved for some reason, return the original result.
-			}
-		return result;
-	}
-
-	/**
-	 * @see IPluginDescriptor
-	 */
-	public final URL find(IPath path, Map override) {
-		URL result = FindSupport.find(bundleOsgi, path, override);
-		if (result != null)
-			try {
-				result = Platform.resolve(result);
-			} catch (IOException e) {
-				// if the URL cannot be resolved for some reason, return the original result.
-			}
-		return result;
-	}
-
-	/**
-	 * @see IPluginDescriptor
-	 */
-	public Plugin getPlugin() throws CoreException {
-		if (pluginObject == null)
-			doPluginActivation();
-		return pluginObject;
-	}
-
-	synchronized void doPluginActivation() throws CoreException {
-		//This class is only called when getPlugin() is invoked.
-		// It needs to handle the case where it is called multiple times during the activation
-		// processing itself (as a result of other classes from this
-		// plugin being directly referenced by the plugin class)
-
-		// NOTE: there is a remote scenario where the plugin class can
-		// deadlock, if it starts separate thread(s) within its
-		// constructor or startup() method, and waits on those
-		// threads before returning (ie. calls join()).
-
-		// sanity checking
-		if ((bundleOsgi.getState() & (Bundle.RESOLVED | Bundle.STARTING | Bundle.ACTIVE)) == 0)
-			throw new IllegalArgumentException();
-		// plug-in hasn't been activated yet - start bundle
-		if (bundleOsgi.getState() == Bundle.RESOLVED)
-			try {
-				bundleOsgi.start();
-			} catch (BundleException e) {
-				throwException(NLS.bind(Messages.plugin_startupProblems, e), e);
-			}
-		if (pluginObject != null)
-			return;
-		boolean errorExit = true;
-		//	check if already activated or pending		
-		if (pluginActivationEnter()) {
-			try {
-				internalDoPluginActivation();
-				errorExit = false;
-			} finally {
-				pluginActivationExit(errorExit);
-			}
-		} else {
-			//Create a fake plugin object for all new bundles that do not use the Plugin class in their activator hierarchy
-			if (active && pluginObject == null) {
-				active = false;
-				pluginObject = new DefaultPlugin(this);
-				active = true;
-			}
-		}
-
-	}
-
-	private String getPluginClass() {
-		return (String) bundleOsgi.getHeaders("").get(PLUGIN_CLASS); //$NON-NLS-1$
-	}
-
-	private String getId() {
-		return bundleOsgi.getSymbolicName();
-	}
-
-	private void internalDoPluginActivation() throws CoreException {
-		String errorMsg;
-		// load the runtime class 
-		String pluginClassName = getPluginClass();
-		Class runtimeClass = null;
-		try {
-			if (pluginClassName == null || pluginClassName.equals("")) {//$NON-NLS-1$
-				runtimeClass = DefaultPlugin.class;
-				pluginClassName = DefaultPlugin.class.getName();
-			}
-			else
-				runtimeClass = bundleOsgi.loadClass(pluginClassName);
-		} catch (ClassNotFoundException e) {
-			errorMsg = NLS.bind(Messages.plugin_loadClassError, getId(), pluginClassName);
-			throwException(errorMsg, e);
-		}
-
-		// find the correct constructor
-		Constructor construct = null;
-		try {
-			construct = runtimeClass.getConstructor(new Class[] {IPluginDescriptor.class});
-		} catch (NoSuchMethodException eNoConstructor) {
-			errorMsg = NLS.bind(Messages.plugin_instantiateClassError, getId(), pluginClassName);
-			throwException(errorMsg, eNoConstructor);
-		}
-
-		// create a new instance
-		try {
-			pluginObject = (Plugin) construct.newInstance(new Object[] {this});
-		} catch (ClassCastException e) {
-			errorMsg = NLS.bind(Messages.plugin_notPluginClass, pluginClassName);
-			throwException(errorMsg, e);
-		} catch (Exception e) {
-			errorMsg = NLS.bind(Messages.plugin_instantiateClassError, getId(), pluginClassName);
-			throwException(errorMsg, e);
-		}
-	}
-
-	public PluginDescriptor(org.osgi.framework.Bundle b) {
-		bundleOsgi = b;
-		if ((b.getState() & Bundle.ACTIVE) != 0)
-			active = true;
-	}
-
-	public Bundle getBundle() {
-		return bundleOsgi;
-	}
-
-	public void setPlugin(Plugin object) {
-		pluginObject = object;
-	}
-
-	public synchronized void setActive() {
-		this.active = true;
-	}
-	
-	public boolean hasPluginObject() {
-		return pluginObject!=null;
-	}
-
-	public void markAsDeactivated() {
-		deactivated = true;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/PluginPrerequisite.java b/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/PluginPrerequisite.java
deleted file mode 100644
index 3008d8d..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/PluginPrerequisite.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.plugins;
-
-import org.eclipse.core.runtime.IPluginPrerequisite;
-import org.eclipse.core.runtime.PluginVersionIdentifier;
-import org.eclipse.osgi.service.resolver.BundleSpecification;
-import org.eclipse.osgi.service.resolver.VersionRange;
-import org.osgi.framework.Version;
-
-
-/**
- * @deprecated Marking as deprecated to remove the warnings
- */
-public class PluginPrerequisite implements IPluginPrerequisite {
-	private static final Version maxVersion = new Version(Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE);
-	private BundleSpecification prereq = null;
-
-	public PluginPrerequisite(BundleSpecification b) {
-		prereq = b;
-	}
-
-	public PluginVersionIdentifier getResolvedVersionIdentifier() {
-		Version actualVersion = prereq.getSupplier().getVersion();
-		if (actualVersion == null)
-			return null;
-		return new PluginVersionIdentifier(actualVersion.toString());
-	}
-
-	public String getUniqueIdentifier() {
-		return prereq.getName();
-	}
-
-	public PluginVersionIdentifier getVersionIdentifier() {
-		Version specifiedVersion = prereq.getVersionRange() == null ? null : prereq.getVersionRange().getMinimum();
-		if (specifiedVersion == null)
-			return null;
-		return new PluginVersionIdentifier(specifiedVersion.toString());
-	}
-
-	public boolean isExported() {
-		return prereq.isExported();
-	}
-
-	public boolean isMatchedAsGreaterOrEqual() {
-		return isMatchedAsGreaterOrEqual(prereq.getVersionRange());
-	}
-
-	public boolean isMatchedAsCompatible() {
-		return isMatchedAsCompatible(prereq.getVersionRange());
-	}
-
-	public boolean isMatchedAsEquivalent() {
-		return isMatchedAsEquivalent(prereq.getVersionRange());
-	}
-
-	public boolean isMatchedAsPerfect() {
-		return isMatchedAsPerfect(prereq.getVersionRange());
-	}
-
-	public boolean isMatchedAsExact() {
-		return isMatchedAsEquivalent();
-	}
-
-	public boolean isOptional() {
-		return prereq.isOptional();
-	}
-
-	private static boolean isMatchedAsGreaterOrEqual(VersionRange versionRange) {
-		if (versionRange == null || versionRange.getMinimum() == null)
-			return false;
-		Version maximum = versionRange.getMaximum();
-		if (maximum == null || maximum.compareTo(maxVersion) >= 0)
-			return true;
-		return false;
-	}
-
-	private static boolean isMatchedAsPerfect(VersionRange versionRange) {
-		if (versionRange == null || versionRange.getMinimum() == null)
-			return false;
-		Version minimum = versionRange.getMinimum();
-		Version maximum = versionRange.getMaximum() == null ? maxVersion : versionRange.getMaximum();
-		if (minimum.equals(maximum))
-			return true;
-		return false;
-	}
-
-	private static boolean isMatchedAsEquivalent(VersionRange versionRange) {
-		if (versionRange == null || versionRange.getMinimum() == null)
-			return false;
-		Version minimum = versionRange.getMinimum();
-		Version maximum = versionRange.getMaximum() == null ? maxVersion : versionRange.getMaximum();
-		if (!versionRange.getIncludeMinimum() || versionRange.getIncludeMaximum())
-			return false;
-		else if (minimum.getMajor() == maximum.getMajor() - 1)
-			return false;
-		else if (minimum.getMajor() != maximum.getMajor())
-			return false;
-		else if (minimum.getMinor() == maximum.getMinor() - 1)
-			return true;
-		return false;
-	}
-
-	private static boolean isMatchedAsCompatible(VersionRange versionRange) {
-		if (versionRange == null || versionRange.getMinimum() == null)
-			return false;
-		Version minimum = versionRange.getMinimum();
-		Version maximum = versionRange.getMaximum() == null ? maxVersion : versionRange.getMaximum();
-		if (!versionRange.getIncludeMinimum() || versionRange.getIncludeMaximum())
-			return false;
-		else if (minimum.getMajor() == maximum.getMajor() - 1)
-			return true;
-		return false;	
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/PluginRegistry.java b/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/PluginRegistry.java
deleted file mode 100644
index 1c47001..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/PluginRegistry.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.core.internal.plugins;
-
-import java.util.*;
-import java.util.ArrayList;
-import org.eclipse.core.internal.runtime.InternalPlatform;
-import org.eclipse.core.runtime.*;
-import org.osgi.framework.*;
-
-/**
- * @deprecated Marking as deprecated to remove the warnings
- */
-public class PluginRegistry implements IPluginRegistry {
-	private IExtensionRegistry extRegistry;
-	private RegistryListener listener;
-	
-	protected WeakHashMap descriptors = new WeakHashMap();	//key is a bundle object, value is a pluginDescriptor. The synchornization is required
-
-	public PluginRegistry() {
-		extRegistry = InternalPlatform.getDefault().getRegistry();
-		listener = new RegistryListener();
-		InternalPlatform.getDefault().getBundleContext().addBundleListener(listener);
-	}
-
-	public void close() {
-		InternalPlatform.getDefault().getBundleContext().removeBundleListener(listener);
-		listener = null; 
-		descriptors = null;
-	}
-	
-	/**
-	 * @deprecated Marking as deprecated to remove the warnings
-	 */
-	public IConfigurationElement[] getConfigurationElementsFor(String uniqueId) {
-		return extRegistry.getConfigurationElementsFor(uniqueId);
-	}
-
-	/**
-	 * @deprecated Marking as deprecated to remove the warnings
-	 */
-	public IConfigurationElement[] getConfigurationElementsFor(String pluginId, String pointId) {
-		return extRegistry.getConfigurationElementsFor(pluginId, pointId);
-	}
-
-	/**
-	 * @deprecated Marking as deprecated to remove the warnings
-	 */
-	public IConfigurationElement[] getConfigurationElementsFor(String pluginId, String pointId, String extensionId) {
-		return extRegistry.getConfigurationElementsFor(pluginId, pointId, extensionId);
-	}
-
-	/**
-	 * @deprecated Marking as deprecated to remove the warnings
-	 */
-	public IExtension getExtension(String xptUniqueId, String extUniqueId) {
-		return extRegistry.getExtension(xptUniqueId, extUniqueId);
-	}
-
-	/**
-	 * @deprecated Marking as deprecated to remove the warnings
-	 */
-	public IExtension getExtension(String pluginId, String xptSimpleId, String extId) {
-		return extRegistry.getExtension(pluginId, xptSimpleId, extId);
-	}
-
-	/**
-	 * @deprecated Marking as deprecated to remove the warnings
-	 */
-	public IExtensionPoint getExtensionPoint(String xptUniqueId) {
-		return extRegistry.getExtensionPoint(xptUniqueId);
-	}
-
-	/**
-	 * @deprecated Marking as deprecated to remove the warnings
-	 */
-	public IExtensionPoint getExtensionPoint(String plugin, String xpt) {
-		return extRegistry.getExtensionPoint(plugin, xpt);
-	}
-
-	/**
-	 * @deprecated Marking as deprecated to remove the warnings
-	 */
-	public IExtensionPoint[] getExtensionPoints() {
-		return extRegistry.getExtensionPoints();
-	}
-	
-	/**
-	 * @deprecated Marking as deprecated to remove the warnings
-	 */
-	public IPluginDescriptor getPluginDescriptor(String plugin) {
-		Bundle correspondingBundle = InternalPlatform.getDefault().getBundle(plugin);
-		if (correspondingBundle == null)
-			return null;
-		return getPluginDescriptor(correspondingBundle);
-	}
-
-	private PluginDescriptor getPluginDescriptor(Bundle bundle) {
-		if (InternalPlatform.getDefault().isFragment(bundle) || descriptors == null) {
-			return null;
-		}
-		synchronized(descriptors) {
-			PluginDescriptor correspondingDescriptor = (PluginDescriptor) descriptors.get(bundle);
-			if (bundle != null) {
-				// we haven't created a plugin descriptor yet or it was for a different bundle
-				if (correspondingDescriptor == null || correspondingDescriptor.getBundle() != bundle) {
-					// create a new plugin descriptor and save it for the next time
-					correspondingDescriptor = new PluginDescriptor(bundle);
-					descriptors.put(bundle, correspondingDescriptor);
-				}
-				return correspondingDescriptor;
-			}
-			// if a bundle does not exist, ensure we don't keep a plugin descriptor for it
-			if (correspondingDescriptor != null)
-				descriptors.remove(bundle);
-		}
-		return null;
-	}
-	
-	/**
-	 * @deprecated Marking as deprecated to remove the warnings
-	 */
-	public IPluginDescriptor[] getPluginDescriptors(String plugin) {
-		Bundle[] bundles = InternalPlatform.getDefault().getBundles(plugin, null);
-		if (bundles == null)
-			return new IPluginDescriptor[0];
-		IPluginDescriptor[] results = new IPluginDescriptor[bundles.length];
-		int added = 0;
-		for (int i = 0; i < bundles.length; i++) {
-			PluginDescriptor desc = getPluginDescriptor(bundles[i]);
-			if (desc != null)
-				results[added++] = desc;
-		}
-		if (added == bundles.length)
-			return results;
-		
-		if (added == 0)
-			return new IPluginDescriptor[0];
-		
-		IPluginDescriptor[] toReturn = new IPluginDescriptor[added];
-		System.arraycopy(results, 0, toReturn, 0, added);
-		return toReturn;
-	}
-
-	/**
-	 * @deprecated Marking as deprecated to remove the warnings
-	 */
-	public IPluginDescriptor getPluginDescriptor(String pluginId, PluginVersionIdentifier version) {
-		Bundle[] bundles = InternalPlatform.getDefault().getBundles(pluginId, version.toString());
-		if (bundles == null)
-			return null;
-		
-		return getPluginDescriptor(bundles[0]);
-	}
-
-	/**
-	 * @deprecated Marking as deprecated to remove the warnings
-	 */
-	public IPluginDescriptor[] getPluginDescriptors() {
-		Bundle[] bundles = InternalPlatform.getDefault().getBundleContext().getBundles();
-		ArrayList pds = new ArrayList(bundles.length);
-		for (int i = 0; i < bundles.length; i++) {
-			boolean isFragment = InternalPlatform.getDefault().isFragment(bundles[i]);
-			if (!isFragment && bundles[i].getSymbolicName() != null && (bundles[i].getState() == Bundle.RESOLVED || bundles[i].getState() == Bundle.STARTING || bundles[i].getState() == Bundle.ACTIVE))
-				pds.add(getPluginDescriptor(bundles[i]));
-		}
-		IPluginDescriptor[] result = new IPluginDescriptor[pds.size()];
-		return (IPluginDescriptor[]) pds.toArray(result);
-	}
-
-	void logError(IStatus status) {
-		InternalPlatform.getDefault().log(status);
-		if (InternalPlatform.DEBUG)
-			System.out.println(status.getMessage());
-	}
-
-	public class RegistryListener implements BundleListener {
-		public void bundleChanged(BundleEvent event) {
-			if (descriptors == null)
-				return;
-			
-			synchronized(descriptors) {
-				if (event.getType() == BundleEvent.UNINSTALLED || event.getType() == BundleEvent.UNRESOLVED) {
-					descriptors.remove(event.getBundle());
-				}
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/Policy.java b/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/Policy.java
deleted file mode 100644
index 74ec166..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/Policy.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.plugins;
-
-import java.text.MessageFormat;
-import java.util.*;
-import org.eclipse.core.runtime.*;
-
-public class Policy {
-	private static String bundleName = "org.eclipse.core.internal.plugins.messages"; //$NON-NLS-1$
-	private static ResourceBundle bundle;
-
-	/*
-	 * Returns a resource bundle, creating one if it none is available. 
-	 */
-	private static ResourceBundle getResourceBundle() {
-		// thread safety
-		ResourceBundle tmpBundle = bundle;
-		if (tmpBundle != null)
-			return tmpBundle;
-		// always create a new classloader to be passed in 
-		// in order to prevent ResourceBundle caching
-		return bundle = ResourceBundle.getBundle(bundleName, Locale.getDefault());
-	}
-
-	/**
-	 * Lookup the message with the given ID in this catalog 
-	 */
-	public static String bind(String id) {
-		return bind(id, (String[]) null);
-	}
-
-	/**
-	 * Lookup the message with the given ID in this catalog and bind its
-	 * substitution locations with the given string.
-	 */
-	public static String bind(String id, String binding) {
-		return bind(id, new String[] {binding});
-	}
-
-	/**
-	 * Lookup the message with the given ID in this catalog and bind its
-	 * substitution locations with the given strings.
-	 */
-	public static String bind(String id, String binding1, String binding2) {
-		return bind(id, new String[] {binding1, binding2});
-	}
-
-	/**
-	 * Lookup the message with the given ID in this catalog and bind its
-	 * substitution locations with the given string values.
-	 */
-	public static String bind(String id, String[] bindings) {
-		if (id == null)
-			return "No message available"; //$NON-NLS-1$
-		String message = null;
-		try {
-			message = getResourceBundle().getString(id);
-		} catch (MissingResourceException e) {
-			// If we got an exception looking for the message, fail gracefully by just returning
-			// the id we were looking for.  In most cases this is semi-informative so is not too bad.
-			return "Missing message: " + id + " in: " + bundleName; //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		if (bindings == null)
-			return message;
-		return MessageFormat.format(message, bindings);
-	}
-
-	public static IProgressMonitor monitorFor(IProgressMonitor monitor) {
-		if (monitor == null)
-			return new NullProgressMonitor();
-		return monitor;
-	}
-
-	public static IProgressMonitor subMonitorFor(IProgressMonitor monitor, int ticks) {
-		if (monitor == null)
-			return new NullProgressMonitor();
-		if (monitor instanceof NullProgressMonitor)
-			return monitor;
-		return new SubProgressMonitor(monitor, ticks);
-	}
-
-	public static IProgressMonitor subMonitorFor(IProgressMonitor monitor, int ticks, int style) {
-		if (monitor == null)
-			return new NullProgressMonitor();
-		if (monitor instanceof NullProgressMonitor)
-			return monitor;
-		return new SubProgressMonitor(monitor, ticks, style);
-	}
-
-	/**
-	 * Print a debug message to the console. If the given boolean is <code>true</code> then
-	 * pre-pend the message with the current date.
-	 */
-	public static void debug(boolean includeDate, String message) {
-		if (includeDate)
-			message = new Date(System.currentTimeMillis()) + " - " + message; //$NON-NLS-1$
-		System.out.println(message);
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/messages.properties b/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/messages.properties
deleted file mode 100644
index 9a50fc6..0000000
--- a/bundles/org.eclipse.core.runtime.compatibility/src-runtime/org/eclipse/core/internal/plugins/messages.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2004 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-### Runtime backward compatibility message catalog
-
-
-# Plugin activation/deactivation messages
-activator.applicationNotStarted=Legacy plug-in \"{0}\" must not be automatically activated on startup. This is probably caused by a previous crash in Eclipse.
-
-#Platform messages
-platform.errorInstalling=Error installing plug-in(s).
-platform.cannotInstallPlugin=Could not install plugin from \"{0}\".
diff --git a/bundles/org.eclipse.core.runtime/.classpath b/bundles/org.eclipse.core.runtime/.classpath
deleted file mode 100644
index 9681d7c..0000000
--- a/bundles/org.eclipse.core.runtime/.classpath
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins">
-		<accessrules>
-			<accessrule kind="discouraged" pattern="**/internal"/>
-		</accessrules>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/bundles/org.eclipse.core.runtime/.cvsignore b/bundles/org.eclipse.core.runtime/.cvsignore
deleted file mode 100644
index c5e82d7..0000000
--- a/bundles/org.eclipse.core.runtime/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.runtime/.options b/bundles/org.eclipse.core.runtime/.options
deleted file mode 100644
index 57f99a0..0000000
--- a/bundles/org.eclipse.core.runtime/.options
+++ /dev/null
@@ -1,26 +0,0 @@
-# Debugging options for the org.eclipse.core.runtime plugin
-
-# Turn on general debugging for the org.eclipse.core.runtime plugin.
-# Also displays overall startup time.
-org.eclipse.core.runtime/debug=false
-
-# Prints out values of OS, WS, NL, and ARCH
-org.eclipse.core.runtime/debug/context=false
-
-# Captures performance event information (See org.eclipse.core.runtime.PerformanceStats)
-org.eclipse.core.runtime/perf=false
-
-# Tracks performance events that run within an acceptable duration
-org.eclipse.core.runtime/perf/success=false
-
-# Turn on debugging for the compatibility layer
-org.eclipse.core.runtime/compatibility/debug=false
-
-# Turn on debugging for plugin preferences
-org.eclipse.core.runtime/preferences/plugin=false
-
-# Turn on debugging in the support for non-local plugins.
-org.eclipse.core.runtime/url/debug=false
-org.eclipse.core.runtime/url/debug/connect=false
-org.eclipse.core.runtime/url/debug/cachelookup=false
-org.eclipse.core.runtime/url/debug/cachecopy=false
diff --git a/bundles/org.eclipse.core.runtime/.project b/bundles/org.eclipse.core.runtime/.project
deleted file mode 100644
index 3643f04..0000000
--- a/bundles/org.eclipse.core.runtime/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.core.runtime</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 1993c40..0000000
--- a/bundles/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue May 25 14:58:43 EDT 2004
-encoding/<project>=ISO-8859-1
-eclipse.preferences.version=1
diff --git a/bundles/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 8807128..0000000
--- a/bundles/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,77 +0,0 @@
-#Fri May 20 10:26:53 EDT 2005
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=error
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 2cc1fe3..0000000
--- a/bundles/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,6 +0,0 @@
-#Fri Jan 06 16:48:11 EST 2006
-eclipse.preferences.version=1
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=;
-org.eclipse.jdt.ui.ondemandthreshold=3
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return Returns the ${bare_field_name}.\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} The ${bare_field_name} to set.\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\r\n * Copyright (c) ${year} IBM Corporation and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n *\r\n * Contributors\:\r\n *     IBM Corporation - initial API and implementation\r\n ******************************************************************************/\r\n</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @since 3.2\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="New classes and interfaces" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\r\n * Copyright (c) 2006 IBM Corporation and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n * \r\n * Contributors\:\r\n *     IBM Corporation - initial API and implementation\r\n *******************************************************************************/\r\n${package_declaration}\r\n\r\n/**\r\n * \r\n */\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block&\#13;\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
diff --git a/bundles/org.eclipse.core.runtime/META-INF/MANIFEST.MF b/bundles/org.eclipse.core.runtime/META-INF/MANIFEST.MF
deleted file mode 100644
index dae4e24..0000000
--- a/bundles/org.eclipse.core.runtime/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,18 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-Version: 3.2.0.qualifier
-Bundle-SymbolicName: org.eclipse.core.runtime; singleton:=true
-Bundle-Vendor: %providerName
-Bundle-Activator: org.eclipse.core.internal.runtime.PlatformActivator
-Bundle-Localization: plugin
-Export-Package: org.eclipse.core.internal.boot;x-friends:="org.eclipse.core.resources,org.eclipse.core.runtime.compatibility,org.eclipse.pde.build",
- org.eclipse.core.internal.preferences;x-internal:=true,
- org.eclipse.core.internal.runtime;x-friends:="org.eclipse.core.runtime.compatibility",
- org.eclipse.core.runtime
-Require-Bundle: org.eclipse.equinox.registry;visibility:=reexport,
- org.eclipse.core.jobs;visibility:=reexport,
- org.eclipse.equinox.preferences;visibility:=reexport,
- org.eclipse.core.contenttype;visibility:=reexport,
- org.eclipse.equinox.common;visibility:=reexport,
- org.eclipse.osgi;bundle-version="[3.1.0,4.0.0)";visibility:=reexport
diff --git a/bundles/org.eclipse.core.runtime/about.html b/bundles/org.eclipse.core.runtime/about.html
deleted file mode 100644
index bc8b12b..0000000
--- a/bundles/org.eclipse.core.runtime/about.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<title>About</title>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>September 26, 2005</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html" target="_blank">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
-
-<h3>Cryptography</h3>
-
-<p><b>Export Control</b></p>
-<p>The plug-in contains encryption software.  The country in which you are currently may have restrictions on the import, possession,
-and use, and/or re-export to another country, of encryption software.  BEFORE using any encryption software, please check the country's
-laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this
-is permitted.</p>
-
-<p><b>Encryption Items</b></p>
-
-<p>Details of the encryption software in this plug-in are provided to assist in obtaining relevant export control classification and approval.
-Cryptography in this plug-in has been classified as Export Commodity Control Number (ECCN) 5D002.c.1 by the U.S. Government Department of Commerce,
-Bureau of Export Administration and deemed eligible for export under License Exception Technology Software Unrestricted (TSU) for both object code
-and source code.</p>
-
-<p>The plug-in contains a proprietary routine that encrypts and decrypts information used to login to Version Control Management (VCM) repositories.
-This routine uses the SHA-1 message digest algorithm implemented in a Java (TM) Runtime Environment (JRE), to generate a cryptographically secure sequence of bytes based on a
-user-supplied password combined with bytes supplied by a random number generator.  The secure random numbers generated by this sequence are then added to each byte in the data
-to be encrypted. When the data is to be decrypted, the same password will generate the same sequence of random numbers, which is then subtracted from each byte in the encrypted data.
-Note that a JRE and therefore the aforementioned SHA-1 message digest code is not included with the plug-in.</p>
-
-<p>The following Java classes contain encryption items (the plug-in may contain both binary and source code):</p>
-
-<ul>
-	<li>org.eclipse.core.internal.runtime.Cipher</li>
-</ul>
-
-<small>Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.</small>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.runtime/build.properties b/bundles/org.eclipse.core.runtime/build.properties
deleted file mode 100644
index 8521e17..0000000
--- a/bundles/org.eclipse.core.runtime/build.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = .options,\
-               about.html,\
-               plugin.properties,\
-               plugin.xml,\
-               .,\
-               META-INF/
-source.. = src/
-src.includes = about.html,\
-               schema/
-
diff --git a/bundles/org.eclipse.core.runtime/component.xml b/bundles/org.eclipse.core.runtime/component.xml
deleted file mode 100644
index 130dd16..0000000
--- a/bundles/org.eclipse.core.runtime/component.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<component xmlns="http://eclipse.org/component"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="http://eclipse.org/component ../component.xsd "
-   name="Eclipse Platform Runtime">
-   <component-depends unrestricted="true"/>
-
- <plugin id="org.eclipse.core.runtime" />
- <plugin id="org.eclipse.core.runtime.compatibility" />
-
- <package name="org.eclipse.core.boot"/>
- 
- <package name="org.eclipse.core.runtime">
-   <type name="EventStats" instantiate="false" subclass="false" />
-   <type name="IAdapterManager" implement="false" />
-   <type name="IConfigurationElement" implement="false" />
-   <type name="IExtension" implement="false" />
-   <type name="IExtensionDelta" implement="false" />
-   <type name="IExtensionPoint" implement="false" />
-   <type name="IExtensionRegistry" implement="false" />
-   <type name="ILibrary" implement="false" />
-   <type name="ILog" implement="false" />
-   <type name="InvalidRegistryObjectException" subclass="false" instantiate="false"/>
-   <type name="IPath" implement="false" />
-   <type name="IPluginDescriptor" implement="false" />
-   <type name="IPluginPrerequisite" implement="false" />
-   <type name="IPluginRegistry" implement="false" />
-   <type name="IRegistryChangeEvent" implement="false" />
-   <type name="Path" subclass="false" />
-   <type name="PluginVersionIdentifier" subclass="false" />
-   <type name="Preferences" subclass="false" />
-   <type name="QualifiedName" subclass="false" />
- </package>
- 
- <package name="org.eclipse.core.runtime.content">
-	<type name="BinarySignatureDescriber" instantiate="false" />
-	<type name="IContentDescription" implement="false" />
-	<type name="IContentType" implement="false" />
-	<type name="IContentTypeManager" implement="false" />
-	<type name="XMLRootElementContentDescriber" instantiate="false" />
- </package>
- 
- <package name="org.eclipse.core.runtime.dynamicHelpers"/>
- 
- <package name="org.eclipse.core.runtime.jobs">
-	<type name="IJobChangeEvent" implement="false" />
-	<type name="IJobManager" implement="false" />
-	<type name="IJobStatus" implement="false" />
-	<type name="ILock" implement="false" />
-	<type name="MultiRule" subclass="false" />
- </package>
- 
- <package name="org.eclipse.core.runtime.preferences">
-	<type name="IExportedPreferences" implement="false" />
-	<type name="IPreferencesService" implement="false" />
- </package>
- 
- <package name="org.osgi.service.prefs"/>
- 
- <package name="org.eclipse.core.runtime.model"/>
-
-</component>
diff --git a/bundles/org.eclipse.core.runtime/plugin.properties b/bundles/org.eclipse.core.runtime/plugin.properties
deleted file mode 100644
index 3aad9c4..0000000
--- a/bundles/org.eclipse.core.runtime/plugin.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2004 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-pluginName = Core Runtime
-providerName = Eclipse.org
-applicationsName = Applications
-shutdownHook = Shutdown Hook
-adaptersName = Adapter factories
-productsName = Products
-contentTypesName = Content Types
-preferencesName=Preferences
diff --git a/bundles/org.eclipse.core.runtime/plugin.xml b/bundles/org.eclipse.core.runtime/plugin.xml
deleted file mode 100644
index f9972bb..0000000
--- a/bundles/org.eclipse.core.runtime/plugin.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin>
-   <extension-point id="applications" name="%applicationsName" schema="schema/applications.exsd"/>
-   <extension-point id="products" name="%productsName" schema="schema/products.exsd"/>
-   <extension-point id="adapters" name="%adaptersName" schema="schema/adapters.exsd"/>
-   <extension-point id="preferences" name="%preferencesName" schema="schema/preferences.exsd"/>
-   <extension-point id="contentTypes" name="%contentTypesName" schema="schema/contentTypes.exsd"/>
-</plugin>
diff --git a/bundles/org.eclipse.core.runtime/schema/adapters.exsd b/bundles/org.eclipse.core.runtime/schema/adapters.exsd
deleted file mode 100644
index c759c77..0000000
--- a/bundles/org.eclipse.core.runtime/schema/adapters.exsd
+++ /dev/null
@@ -1,154 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.core.runtime">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.core.runtime" id="adapters" name="Adapters"/>
-      </appInfo>
-      <documentation>
-         The adapters extension point allows plug-ins to declaratively register adapter factories.  This information is used to by the 
-         runtime XML expression language to determine existence of adapters without causing plug-ins to be loaded.
-         Registration of adapter factories via extension point eliminates the need to manually register adapter factories when a plug-in starts up.
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <sequence>
-            <element ref="factory" minOccurs="1" maxOccurs="unbounded"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appInfo>
-                  <meta.attribute translatable="true"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="factory">
-      <complexType>
-         <sequence>
-            <element ref="adapter" minOccurs="1" maxOccurs="unbounded"/>
-         </sequence>
-         <attribute name="adaptableType" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The fully qualified name of a class (typically implementing IAdaptable) that this factory provides adapters for.
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The fully qualified name of the adapter factory class.  Must implement &lt;tt&gt;org.eclipse.core.runtime.IAdapterFactory&lt;/tt&gt;.
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.core.runtime.IAdapterFactory"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="adapter">
-      <complexType>
-         <attribute name="type" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The fully qualified name of a Java class or interface that this factory can adapt to.
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="since"/>
-      </appInfo>
-      <documentation>
-         3.0
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
-         Following is an example of an adapter declaration.  This example declares that this plug-in will provide an adapter factory that will adapt objects of type IFile to objects of type MyFile.
-&lt;p&gt;
-   &lt;pre&gt;
-      &lt;extension point=&quot;org.eclipse.core.runtime.adapters&quot;&gt;
-         &lt;factory 
-            class=&quot;com.xyz.MyFileAdapterFactory&quot; 
-            adaptableType=&quot;org.eclipse.core.resources.IFile&quot;&gt;
-            &lt;adapter type=&quot;com.xyz.MyFile&quot;/&gt;
-         &lt;/factory&gt;
-      &lt;/extension&gt;
-   &lt;/pre&gt;
-&lt;/p&gt;
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         Adapter factories registered using this extension point can be queried using the method 
-&lt;code&gt;IAdapterManager.hasAdapter&lt;/code&gt;, or retrieved using one of the &lt;tt&gt;getAdapter&lt;/tt&gt; methods on &lt;tt&gt;IAdapterFactory&lt;/tt&gt;.
-An adapter factory registered with this extension point does not need to be registered at runtime using &lt;tt&gt;IAdapterFactory.registerAdapters&lt;/tt&gt;.
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         Several plug-ins in the platform provide adapters for a number of different IAdaptable objects.
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         Copyright (c) 2004, 2005 IBM Corporation and others.&lt;br&gt;
-All rights reserved. This program and the accompanying materials are made 
-available under the terms of the Eclipse Public License v1.0 which 
-accompanies 
-this distribution, and is available at 
-&lt;a 
-href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
-      </documentation>
-   </annotation>
-
-</schema>
diff --git a/bundles/org.eclipse.core.runtime/schema/applications.exsd b/bundles/org.eclipse.core.runtime/schema/applications.exsd
deleted file mode 100644
index a3c2b16..0000000
--- a/bundles/org.eclipse.core.runtime/schema/applications.exsd
+++ /dev/null
@@ -1,162 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.core.runtime">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.core.runtime" id="applications" name="Applications"/>
-      </appInfo>
-      <documentation>
-         Platform runtime supports plug-ins which would like to 
-declare main entry points.  That is, programs which 
-would like to run using the platform runtime but yet 
-control all aspects of execution can declare themselves 
-as an application.  Declared applications can be run 
-directly from the main platform launcher by specifying 
-the &lt;i&gt;-application&lt;/i&gt; argument where the parameter 
-is the id of an extension supplied to the 
-applications extension point described here.  
-This application is instantiated and run by the platform.  
-Platform clients can also use the platform to lookup and 
-run multiple applications.
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <sequence>
-            <element ref="application"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appInfo>
-                  <meta.attribute translatable="true"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="application">
-      <complexType>
-         <sequence>
-            <element ref="run" minOccurs="0" maxOccurs="1"/>
-         </sequence>
-      </complexType>
-   </element>
-
-   <element name="run">
-      <complexType>
-         <sequence>
-            <element ref="parameter" minOccurs="0" maxOccurs="unbounded"/>
-         </sequence>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the fully-qualified name of a class which implements 
-&lt;samp&gt;org.eclipse.core.runtime.IPlatformRunnable&lt;/samp&gt;.
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.core.runtime.IPlatformRunnable"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="parameter">
-      <annotation>
-         <appInfo>
-            <meta.element labelAttribute="name"/>
-         </appInfo>
-      </annotation>
-      <complexType>
-         <attribute name="name" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the name of this parameter made available to instances of the specified application class
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="value" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the value of this parameter made available to instances of the specified application class
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
-         Following is an example of an application declaration: 
-&lt;p&gt;
-&lt;pre&gt;
-   &lt;extension id=&quot;coolApplication&quot; point=&quot;org.eclipse.core.runtime.applications&quot;&gt; 
-      &lt;application&gt; 
-         &lt;run class=&quot;com.xyz.applications.Cool&quot;&gt; 
-            &lt;parameter name=&quot;optimize&quot; value=&quot;true&quot;/&gt; 
-         &lt;/run&gt; 
-      &lt;/application&gt; 
-   &lt;/extension&gt; 
-&lt;/pre&gt;
-&lt;/p&gt;
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         The value of the class attribute must represent an 
-implementor of 
-&lt;samp&gt;org.eclipse.core.runtime.IPlatformRunnable&lt;/samp&gt;.
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         The platform supplies a number of applications including the platform workbench itself.
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         Copyright (c) 2004, 2005 IBM Corporation and others.&lt;br&gt;
-All rights reserved. This program and the accompanying materials are made 
-available under the terms of the Eclipse Public License v1.0 which 
-accompanies 
-this distribution, and is available at 
-&lt;a 
-href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
-      </documentation>
-   </annotation>
-
-</schema>
diff --git a/bundles/org.eclipse.core.runtime/schema/contentTypes.exsd b/bundles/org.eclipse.core.runtime/schema/contentTypes.exsd
deleted file mode 100644
index a5289ae..0000000
--- a/bundles/org.eclipse.core.runtime/schema/contentTypes.exsd
+++ /dev/null
@@ -1,360 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.core.runtime">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.core.runtime" id="contentTypes" name="Content Types"/>
-      </appInfo>
-      <documentation>
-         The content types extension point allows plug-ins to contribute to the platform content type catalog. There are two forms of contributions: &lt;cite&gt;content types&lt;/cite&gt; and &lt;cite&gt;file associations&lt;/cite&gt;.
-&lt;ul&gt;
-&lt;li&gt;
-a content type represents a file format and its naming conventions. Content types can be defined from scratch, or can inherit from existing ones, specializing them. Also, a content type can be made into an alias for another content type (see the &lt;code&gt;alias-for&lt;/code&gt; attribute). When this feature is used:
-  &lt;ul&gt;&lt;li&gt;if the target is absent, the alias content type is processed 
-  as a normal content type;&lt;/li&gt;
-  &lt;li&gt;if the target is present, all references to the alias type are automatically
-  transformed into references to the target type, and the alias type cannot be 
-  accessed nor is exposed through the API.&lt;/li&gt;&lt;/ul&gt;
-&lt;/li&gt;
-&lt;li&gt;
-a file association extends an existing content type by associating new file names and/or extensions to it&lt;/li&gt;
-&lt;/ul&gt;
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <sequence>
-            <element ref="content-type" minOccurs="0" maxOccurs="unbounded"/>
-            <element ref="file-association" minOccurs="0" maxOccurs="unbounded"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  a fully qualified identifier of the target extension point
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  an optional identifier of the extension instance
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  an optional name of the extension instance
-               </documentation>
-               <appInfo>
-                  <meta.attribute translatable="true"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="content-type">
-      <complexType>
-         <sequence>
-            <element ref="describer" minOccurs="0" maxOccurs="1"/>
-            <element ref="property" minOccurs="0" maxOccurs="unbounded"/>
-         </sequence>
-         <attribute name="id" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the identifier for this content type (either a simple id unique for content types within the extension namespace, or a fully qualified id). The token cannot contain whitespace
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="base-type" type="string">
-            <annotation>
-               <documentation>
-                  the fully qualified identifier of this content type&apos;s base type. This content type will inherit its base type&apos;s file associations, content describer and default charset, unless they are redefined
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the human-readable name of this content type
-               </documentation>
-               <appInfo>
-                  <meta.attribute translatable="true"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-         <attribute name="file-extensions" type="string">
-            <annotation>
-               <documentation>
-                  a comma-separated list of file extensions to be associated with this content type
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="file-names" type="string">
-            <annotation>
-               <documentation>
-                  a comma-separated list of file names to be associated with this content type
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="priority" use="default" value="normal">
-            <annotation>
-               <documentation>
-                  the priority for this content type. Priorities are used to solve conflicts (when two content types are associated to the same file name/extension)
-               </documentation>
-            </annotation>
-            <simpleType>
-               <restriction base="string">
-                  <enumeration value="low">
-                  </enumeration>
-                  <enumeration value="normal">
-                  </enumeration>
-                  <enumeration value="high">
-                  </enumeration>
-               </restriction>
-            </simpleType>
-         </attribute>
-         <attribute name="default-charset" type="string">
-            <annotation>
-               <documentation>
-                  the default charset for this content type, or an empty string, if this content type should not have a default charset even if the parent has one. This is a convenience attribute, equivalent to specifying:
-&lt;pre&gt;
-  &lt;content-type&gt;
-    &lt;property name=&quot;org.eclipse.core.runtime.charset&quot; default=&quot;charset-name&quot;/&gt;
-  &lt;/content-type&gt;
-&lt;/pre&gt;
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="describer" type="string">
-            <annotation>
-               <documentation>
-                  the fully qualified name of a class that implements &lt;samp&gt;org.eclipse.core.runtime.content.IContentDescriber&lt;/samp&gt; or &lt;samp&gt;org.eclipse.core.runtime.content.ITextContentDescriber&lt;/samp&gt;, or an empty string, if this content type should not have a describer even if the parent has one
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-         <attribute name="alias-for" type="string">
-            <annotation>
-               <documentation>
-                  the fully qualified identifier of the content type this content type is an alias for
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="describer">
-      <annotation>
-         <documentation>
-            If the describer attribute is used in the content-type element, this element is ignored.
-         </documentation>
-      </annotation>
-      <complexType>
-         <sequence>
-            <element ref="parameter" minOccurs="0" maxOccurs="unbounded"/>
-         </sequence>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the fully qualified name of a class that implements &lt;samp&gt;org.eclipse.core.runtime.content.IContentDescriber&lt;/samp&gt; or &lt;samp&gt;org.eclipse.core.runtime.content.ITextContentDescriber&lt;/samp&gt;, or an empty string, if this content type should not have a describer even if the parent has one
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.core.runtime.content.IContentDescriber"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-         <attribute name="plugin" type="string">
-            <annotation>
-               <documentation>
-                  the id for the plug-in providing the describer class
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="file-association">
-      <complexType>
-         <attribute name="content-type" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the fully qualified identifier for the content type this file association contributes to
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="file-names" type="string">
-            <annotation>
-               <documentation>
-                  a comma-separated list of file names to be associated with the target content type
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="file-extensions" type="string">
-            <annotation>
-               <documentation>
-                  a comma-separated list of file extensions to be associated with the target content type
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="parameter">
-      <complexType>
-         <attribute name="name" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the name of this parameter made available to instances of the specified content describer class
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="value" type="string" use="required">
-            <annotation>
-               <documentation>
-                  an arbitrary value associated with the given name and made available to instances of the specified content describer class
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="property">
-      <annotation>
-         <documentation>
-            Declares a property related to this content type, optionally assigning a default value. See &lt;samp&gt;org.eclipse.core.runtime.content.IContentDescription&lt;/samp&gt; for more information on properties.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="name" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the name of the property. If the property is being overriden and has been originally defined in a different namespace, a fully qualified property name must be used
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="default" type="string">
-            <annotation>
-               <documentation>
-                  the default value of the property, or an empty string, if this content type should not have a default value for this property even if a parent has one
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="since"/>
-      </appInfo>
-      <documentation>
-         3.0
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
-         Following is an example of a XML-based content type declaration using &lt;code&gt;org.eclipse.core.runtime.content.XMLRootElementContentDescriber&lt;/code&gt;, 
-a built-in describer: 
-&lt;p&gt;
-&lt;pre&gt;
-   &lt;extension point=&quot;org.eclipse.core.runtime.contentTypes&quot;&gt; 
-      &lt;content-type id=&quot;ABC&quot;
-       base-type=&quot;org.eclipse.core.runtime.xml&quot;      
-       file-extensions=&quot;a,b,c&quot;&gt;
-       &lt;describer class=&quot;org.eclipse.core.runtime.content.XMLRootElementContentDescriber&quot;&gt;
-        &lt;parameter name=&quot;element&quot; value=&quot;abc&quot;/&gt;
-       &lt;/describer&gt;
-      &lt;/content-type&gt; 
-   &lt;/extension&gt; 
-&lt;/pre&gt;
-&lt;/p&gt;
-Here is an example of a simple text-based content type that has a specific file extension:
-&lt;p&gt;
-&lt;pre&gt;
-   &lt;extension point=&quot;org.eclipse.core.runtime.contentTypes&quot;&gt; 
-      &lt;content-type id=&quot;MyText&quot;
-       base-type=&quot;org.eclipse.core.runtime.text&quot;
-       file-extensions=&quot;mytxt&quot;/&gt;
-   &lt;/extension&gt; 
-&lt;/pre&gt;
-&lt;/p&gt;
-When there is need to associate new file names/extensions to an existing content type (as opposed to defining a new content type), a plug-in can contribute a file association as seen below. This has the effect of enhancing the definition of the text content type to include files with names following the &quot;*.mytxt&quot; pattern.
-&lt;p&gt;
-&lt;pre&gt;
-   &lt;extension point=&quot;org.eclipse.core.runtime.contentTypes&quot;&gt; 
-      &lt;file-association 
-       content-type=&quot;org.eclipse.core.runtime.text&quot;
-       file-extensions=&quot;mytxt&quot;/&gt;
-   &lt;/extension&gt; 
-&lt;/pre&gt;
-&lt;/p&gt;
-Here is an example of a content type that defines properties:
-&lt;pre&gt;
-   &lt;extension point=&quot;org.eclipse.core.runtime.contentTypes&quot;&gt; 
-      &lt;content-type id=&quot;MyContentType&quot;
-       file-extensions=&quot;dat&quot;&gt;
-         &lt;property name=&quot;file-format&quot; value=&quot;1&quot;/&gt;
-      &lt;/content-type&gt;
-   &lt;/extension&gt; 
-&lt;/pre&gt;
-&lt;/p&gt;
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         The value of the class attribute in the describer element must represent an 
-implementor of 
-&lt;samp&gt;org.eclipse.core.runtime.content.IContentDescriber&lt;/samp&gt; or &lt;samp&gt;org.eclipse.core.runtime.content.ITextContentDescriber&lt;/samp&gt;.
-
-&lt;samp&gt;org.eclipse.core.runtime.content.IContentDescription&lt;/samp&gt; objects returned by the &lt;samp&gt;org.eclipse.core.runtime.content&lt;/samp&gt; API
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         &lt;p&gt;The org.eclipse.core.runtime plug-in provides the following content types:&lt;ul&gt;
-&lt;li&gt;org.eclipse.core.runtime.text&lt;/li&gt;
-&lt;li&gt;org.eclipse.core.runtime.xml&lt;/li&gt;
-&lt;/ul&gt;
-Other plug-ins in the platform contribute other content types.
-&lt;/p&gt;
-&lt;p&gt;
-Also, the org.eclipse.core.runtime plug-in provides ready-to-use implementations of content describers:&lt;ul&gt;
-&lt;li&gt;org.eclipse.core.runtime.content.XMLRootElementContentDescriber&lt;/li&gt;
-&lt;li&gt;org.eclipse.core.runtime.content.BinarySignatureDescriber&lt;/li&gt;
-&lt;/ul&gt;
-&lt;/p&gt;
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         Copyright (c) 2004, 2005 IBM Corporation and others.&lt;br&gt;
-All rights reserved. This program and the accompanying materials are made 
-available under the terms of the Eclipse Public License v1.0 which 
-accompanies 
-this distribution, and is available at 
-&lt;a 
-href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
-      </documentation>
-   </annotation>
-
-</schema>
diff --git a/bundles/org.eclipse.core.runtime/schema/preferences.exsd b/bundles/org.eclipse.core.runtime/schema/preferences.exsd
deleted file mode 100644
index 4eee8ba..0000000
--- a/bundles/org.eclipse.core.runtime/schema/preferences.exsd
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.core.runtime">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.core.runtime" id="preferences" name="Preferences"/>
-      </appInfo>
-      <documentation>
-         The preferences extension point allows plug-ins to add new preference scopes to the Eclipse preference mechanism as well as specify the class to run to initialize default preference values at runtime.
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <sequence>
-            <element ref="scope" minOccurs="0" maxOccurs="unbounded"/>
-            <element ref="initializer" minOccurs="0" maxOccurs="unbounded"/>
-            <element ref="modifier" minOccurs="0" maxOccurs="unbounded"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appInfo>
-                  <meta.attribute translatable="true"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="scope">
-      <annotation>
-         <documentation>
-            Element describing a client&apos;s definiton of a new preference scope.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="name" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The name of the scope.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The name of the class.
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="IScope"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="initializer">
-      <annotation>
-         <documentation>
-            Element which defines the class to use for runtime preference initialization.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The name of the class.
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="modifier">
-      <annotation>
-         <documentation>
-            Element which defines the class to use for preference modification listening.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The name of the class.
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.core.runtime.preferences.PreferenceModifyListener"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="since"/>
-      </appInfo>
-      <documentation>
-         3.0
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
-         Following is an example of a preference scope declaration.  This example declares that this plug-in will provide a preference implementation for the scope &quot;foo&quot;. It also declares that when the default values are loaded for this plug-in, the class &quot;MyPreferenceInitializer&quot; contains code to be run to initialize preference default values at runtime.
-&lt;p&gt;
-   &lt;pre&gt;
-      &lt;extension point=&quot;org.eclipse.core.runtime.preferences&quot;&gt;
-         &lt;scope name=&quot;foo&quot; class=&quot;com.example.FooPrefs&quot;/&gt;
-         &lt;initializer class=&quot;com.example.MyPreferenceInitializer&quot;/&gt;
-         &lt;modifier class=&quot;com.example.MyModifyListener&quot;/&gt;
-      &lt;/extension&gt;
-   &lt;/pre&gt;
-&lt;/p&gt;
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         The preference service (obtained by calling &lt;code&gt;org.eclipse.core.runtime.Platform.getPreferencesService()&lt;/code&gt;) is the hook into the Eclipse preference mechanism.
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         The org.eclipse.core.runtime plug-in provides preference implementations for the &quot;configuration&quot;, &quot;instance&quot;, and &quot;default&quot; scopes.  The org.eclipse.core.resources plug-in provides an implementation for &quot;project&quot; preferences.
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         Copyright (c) 2004, 2005 IBM Corporation and others.&lt;br&gt;
-All rights reserved. This program and the accompanying materials are made 
-available under the terms of the Eclipse Public License v1.0 which 
-accompanies 
-this distribution, and is available at 
-&lt;a 
-href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
-      </documentation>
-   </annotation>
-
-</schema>
diff --git a/bundles/org.eclipse.core.runtime/schema/products.exsd b/bundles/org.eclipse.core.runtime/schema/products.exsd
deleted file mode 100644
index b9b7ca0..0000000
--- a/bundles/org.eclipse.core.runtime/schema/products.exsd
+++ /dev/null
@@ -1,210 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.core.runtime">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.core.runtime" id="products" name="Products"/>
-      </appInfo>
-      <documentation>
-         Products are the Eclipse unit of branding.  Product extensions are supplied by plug-ins wishing to define one or more products.  There must be one product per extension as the extension id is used in processing and identifying the product.
-&lt;p&gt;
-There are two possible forms of product extension, static and dynamic.  Static product extensions directly contain all relevant information about the product.  Dynamic product extensions identify a class (an &lt;code&gt;IProductProvider&lt;/code&gt;) which is capable of defining one or more products when queried.
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <sequence>
-            <choice>
-               <element ref="product"/>
-               <element ref="provider"/>
-            </choice>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appInfo>
-                  <meta.attribute translatable="true"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="product">
-      <complexType>
-         <sequence>
-            <element ref="property" minOccurs="0" maxOccurs="unbounded"/>
-         </sequence>
-         <attribute name="application" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the default application to run when running this product
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the human-readable name of this product
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="description" type="string">
-            <annotation>
-               <documentation>
-                  the human-readable description of this product
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="property">
-      <annotation>
-         <appInfo>
-            <meta.element labelAttribute="name"/>
-         </appInfo>
-      </annotation>
-      <complexType>
-         <attribute name="name" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the key under which this property is stored
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="value" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the value of this property
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="provider">
-      <annotation>
-         <documentation>
-            details of a product provider
-         </documentation>
-      </annotation>
-      <complexType>
-         <sequence>
-            <element ref="run"/>
-         </sequence>
-      </complexType>
-   </element>
-
-   <element name="run">
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the fully-qualified name of a class which implements 
-&lt;samp&gt;org.eclipse.core.runtime.IProductProvider&lt;/samp&gt;.
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.core.runtime.IProductProvider"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="since"/>
-      </appInfo>
-      <documentation>
-         3.0
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
-         Following is an example of static product declaration: 
-&lt;p&gt;
-&lt;pre&gt;
-   &lt;extension id=&quot;coolProduct&quot; point=&quot;org.eclipse.core.runtime.products&quot;&gt; 
-      &lt;product name=&quot;%coolName&quot; application=&quot;coolApplication&quot; description=&quot;%coolDescription&quot;&gt; 
-          &lt;property name=&quot;windowImage&quot; value=&quot;window.gif&quot;/&gt; 
-          &lt;property name=&quot;aboutImage&quot; value=&quot;image.gif&quot;/&gt; 
-          &lt;property name=&quot;aboutText&quot; value=&quot;%aboutText&quot;/&gt; 
-          &lt;property name=&quot;appName&quot; value=&quot;CoolApp&quot;/&gt; 
-          &lt;property name=&quot;welcomePage&quot; value=&quot;$nl$/welcome.xml&quot;/&gt; 
-          &lt;property name=&quot;preferenceCustomization&quot; value=&quot;plugin_customization.ini&quot;/&gt; 
-      &lt;/product&gt; 
-   &lt;/extension&gt; 
-&lt;/pre&gt;
-&lt;/p&gt;
-
-The following is an example of a dynamic product (product provider) declaration:
-Following is an example of an application declaration: 
-&lt;p&gt;
-&lt;pre&gt;
-   &lt;extension id=&quot;coolProvider&quot; point=&quot;org.eclipse.core.runtime.products&quot;&gt; 
-      &lt;provider&gt; 
-         &lt;run class=&quot;com.example.productProvider&quot;/&gt; 
-      &lt;/provider&gt; 
-   &lt;/extension&gt; 
-&lt;/pre&gt;
-&lt;/p&gt;
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         Static product extensions provided here are represented at runtime by instances of &lt;code&gt;IProduct&lt;/code&gt;.  Dynamic product extensions must identify an implementor of &lt;code&gt;IProductProvider&lt;/code&gt;.  See &lt;code&gt;org.eclipse.ui.branding.IProductConstants&lt;/code&gt; 
-for details of the branding related product properties defined by the Eclipse UI.
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         No implementations of &lt;code&gt;IProductProvider&lt;/code&gt; are supplied.
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         Copyright (c) 2004, 2005 IBM Corporation and others.&lt;br&gt;
-All rights reserved. This program and the accompanying materials are made 
-available under the terms of the Eclipse Public License v1.0 which 
-accompanies 
-this distribution, and is available at 
-&lt;a 
-href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
-      </documentation>
-   </annotation>
-
-</schema>
diff --git a/bundles/org.eclipse.core.runtime/scripts/src-runtime.jardesc b/bundles/org.eclipse.core.runtime/scripts/src-runtime.jardesc
deleted file mode 100644
index 865c948..0000000
--- a/bundles/org.eclipse.core.runtime/scripts/src-runtime.jardesc
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<jardesc>

-	<jar path="C:/IBM/Equinox/workspaces/Equinox/org.eclipse.core.runtime/runtime.jar"/>

-	<options compress="true"

-		descriptionLocation="/org.eclipse.core.runtime/scripts/src-runtime.jardesc"

-		exportErrors="true" exportWarnings="true" logErrors="true"

-		logWarnings="true" overwrite="false" saveDescription="true" useSourceFolders="false"/>

-	<manifest generateManifest="false"

-		manifestLocation="/org.eclipse.core.runtime/src-runtime/META-INF/MANIFEST.MF"

-		manifestVersion="1.0" reuseManifest="false" saveManifest="false" usesManifest="false">

-		<sealing sealJar="false"><packagesToSeal/><packagesToUnSeal/></sealing>

-	</manifest>

-	<selectedElements exportClassFiles="true" exportJavaFiles="false">

-		<javaElement handleIdentifier="=org.eclipse.core.runtime/src-runtime"/>

-	</selectedElements>

-</jardesc>

diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/boot/PlatformURLBaseConnection.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/boot/PlatformURLBaseConnection.java
deleted file mode 100644
index 5289c07..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/boot/PlatformURLBaseConnection.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.boot;
-
-import java.io.IOException;
-import java.net.URL;
-import org.eclipse.core.internal.runtime.Messages;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * Platform URL support
- * platform:/base/	maps to platform installation location
- */
-public class PlatformURLBaseConnection extends PlatformURLConnection {
-
-	// platform/ protocol
-	public static final String PLATFORM = "base"; //$NON-NLS-1$
-	public static final String PLATFORM_URL_STRING = PlatformURLHandler.PROTOCOL + PlatformURLHandler.PROTOCOL_SEPARATOR + "/" + PLATFORM + "/"; //$NON-NLS-1$ //$NON-NLS-2$
-
-	private static URL installURL;
-
-	public PlatformURLBaseConnection(URL url) {
-		super(url);
-	}
-
-	protected boolean allowCaching() {
-		return true;
-	}
-
-	protected URL resolve() throws IOException {
-		String spec = url.getFile().trim();
-		if (spec.startsWith("/")) //$NON-NLS-1$
-			spec = spec.substring(1);
-		if (!spec.startsWith(PLATFORM + "/")) { //$NON-NLS-1$
-			String message = NLS.bind(Messages.url_badVariant, url);
-			throw new IOException(message);
-		}
-		return spec.length() == PLATFORM.length() + 1 ? installURL : new URL(installURL, spec.substring(PLATFORM.length() + 1));
-	}
-
-	public static void startup(URL url) {
-		// register connection type for platform:/base/ handling
-		if (installURL != null)
-			return;
-		installURL = url;
-		PlatformURLHandler.register(PLATFORM, PlatformURLBaseConnection.class);
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/boot/PlatformURLConnection.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/boot/PlatformURLConnection.java
deleted file mode 100644
index 8a11160..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/boot/PlatformURLConnection.java
+++ /dev/null
@@ -1,501 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.boot;
-
-import java.io.*;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.Enumeration;
-import java.util.Properties;
-import org.eclipse.core.internal.runtime.InternalPlatform;
-import org.eclipse.core.internal.runtime.Messages;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * Platform URL support
- */
-public abstract class PlatformURLConnection extends URLConnection {
-
-	private static String os, ws, nl;
-
-	// URL access
-	private boolean isInCache = false;
-	private boolean isJar = false;
-
-	//	protected URL url;				// declared in super (platform: URL)
-	private URL resolvedURL = null; // resolved file URL (eg. http: URL)
-	private URL cachedURL = null; // file URL in cache (file: URL)
-
-	private URLConnection connection = null; // actual connection
-
-	// local cache
-	private static Properties cacheIndex = new Properties();
-	private static String cacheLocation;
-	private static String indexName;
-	private static String filePrefix;
-
-	// constants	
-	private static final int BUF_SIZE = 32768;
-	private static final Object NOT_FOUND = new Object(); // marker
-	private static final String CACHE_PROP = ".cache.properties"; //$NON-NLS-1$
-	private static final String CACHE_LOCATION_PROP = "location"; //$NON-NLS-1$
-	private static final String CACHE_INDEX_PROP = "index"; //$NON-NLS-1$
-	private static final String CACHE_PREFIX_PROP = "prefix"; //$NON-NLS-1$
-	private static final String CACHE_INDEX = ".index.properties"; //$NON-NLS-1$
-	private static final String CACHE_DIR = ".eclipse-" + PlatformURLHandler.PROTOCOL + File.separator; //$NON-NLS-1$
-
-	// debug tracing
-	private static final String OPTION_DEBUG = Platform.PI_RUNTIME + "/url/debug"; //$NON-NLS-1$;
-	private static final String OPTION_DEBUG_CONNECT = OPTION_DEBUG + "/connect"; //$NON-NLS-1$;
-	private static final String OPTION_DEBUG_CACHE_LOOKUP = OPTION_DEBUG + "/cachelookup"; //$NON-NLS-1$;
-	private static final String OPTION_DEBUG_CACHE_COPY = OPTION_DEBUG + "/cachecopy"; //$NON-NLS-1$;
-
-	public final static boolean DEBUG;
-	public final static boolean DEBUG_CONNECT;
-	public final static boolean DEBUG_CACHE_LOOKUP;
-	public final static boolean DEBUG_CACHE_COPY;
-
-	static {
-		if (InternalPlatform.DEBUG) {
-			DEBUG = InternalPlatform.getDefault().getBooleanOption(OPTION_DEBUG, false);
-			DEBUG_CONNECT = InternalPlatform.getDefault().getBooleanOption(OPTION_DEBUG_CONNECT, true);
-			DEBUG_CACHE_LOOKUP = InternalPlatform.getDefault().getBooleanOption(OPTION_DEBUG_CACHE_LOOKUP, true);
-			DEBUG_CACHE_COPY = InternalPlatform.getDefault().getBooleanOption(OPTION_DEBUG_CACHE_COPY, true);
-		} else
-			DEBUG = DEBUG_CONNECT = DEBUG_CACHE_LOOKUP = DEBUG_CACHE_COPY = false;
-	}
-
-	protected PlatformURLConnection(URL url) {
-		super(url);
-	}
-
-	protected boolean allowCaching() {
-		return false;
-	}
-
-	public void connect() throws IOException {
-		connect(false);
-	}
-
-	private synchronized void connect(boolean asLocal) throws IOException {
-		if (connected)
-			return;
-
-		if (shouldCache(asLocal)) {
-			try {
-				URL inCache = getURLInCache();
-				if (inCache != null)
-					connection = inCache.openConnection();
-			} catch (IOException e) {
-				// failed to cache ... will use resolved URL instead
-			}
-		}
-
-		// use resolved URL
-		if (connection == null)
-			connection = resolvedURL.openConnection();
-		connected = true;
-		if (DEBUG && DEBUG_CONNECT)
-			debug("Connected as " + connection.getURL()); //$NON-NLS-1$
-	}
-
-	//TODO consider refactoring this method... it is too long
-	//TODO avoid cryptic identifiers such as ix, tgt, tmp, srcis, tgtos...
-	private void copyToCache() throws IOException {
-
-		if (isInCache | cachedURL == null)
-			return;
-		String tmp;
-		int ix;
-
-		// cache entry key
-		String key;
-		if (isJar) {
-			tmp = url.getFile();
-			ix = tmp.lastIndexOf(PlatformURLHandler.JAR_SEPARATOR);
-			if (ix != -1)
-				tmp = tmp.substring(0, ix);
-			key = tmp;
-		} else
-			key = url.getFile();
-
-		// source url
-		URL src;
-		if (isJar) {
-			tmp = resolvedURL.getFile();
-			ix = tmp.lastIndexOf(PlatformURLHandler.JAR_SEPARATOR);
-			if (ix != -1)
-				tmp = tmp.substring(0, ix);
-			src = new URL(tmp);
-		} else
-			src = resolvedURL;
-		InputStream srcis = null;
-
-		// cache target
-		String tgt;
-		if (isJar) {
-			tmp = cachedURL.getFile();
-			ix = tmp.indexOf(PlatformURLHandler.PROTOCOL_SEPARATOR);
-			if (ix != -1)
-				tmp = tmp.substring(ix + 1);
-			ix = tmp.lastIndexOf(PlatformURLHandler.JAR_SEPARATOR);
-			if (ix != -1)
-				tmp = tmp.substring(0, ix);
-			tgt = tmp;
-		} else
-			tgt = cachedURL.getFile();
-		File tgtFile = null;
-		FileOutputStream tgtos = null;
-
-		boolean error = false;
-		long total = 0;
-
-		try {
-			if (DEBUG && DEBUG_CACHE_COPY) {
-				if (isJar)
-					debug("Caching jar as " + tgt); //$NON-NLS-1$
-				else
-					debug("Caching as " + tgt); //$NON-NLS-1$
-			}
-
-			srcis = src.openStream();
-			byte[] buf = new byte[BUF_SIZE];
-			int count = srcis.read(buf);
-
-			tgtFile = new File(tgt);
-			tgtos = new FileOutputStream(tgtFile);
-
-			while (count != -1) {
-				total += count;
-				tgtos.write(buf, 0, count);
-				count = srcis.read(buf);
-			}
-
-			srcis.close();
-			srcis = null;
-			tgtos.flush();
-			tgtos.getFD().sync();
-			tgtos.close();
-			tgtos = null;
-
-			// add cache entry
-			cacheIndex.put(key, tgt);
-			isInCache = true;
-		} catch (IOException e) {
-			error = true;
-			cacheIndex.put(key, NOT_FOUND);
-			// mark cache entry for this execution
-			if (DEBUG && DEBUG_CACHE_COPY)
-				debug("Failed to cache due to " + e); //$NON-NLS-1$
-			throw e;
-		} finally {
-			if (!error && DEBUG && DEBUG_CACHE_COPY)
-				debug(total + " bytes copied"); //$NON-NLS-1$
-			if (srcis != null)
-				srcis.close();
-			if (tgtos != null)
-				tgtos.close();
-		}
-	}
-
-	protected void debug(String s) {
-		System.out.println("URL " + getURL().toString() + "^" + Integer.toHexString(Thread.currentThread().hashCode()) + " " + s); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	}
-
-	private static void debugStartup(String s) {
-		System.out.println("URL " + s); //$NON-NLS-1$
-	}
-
-	public URL[] getAuxillaryURLs() throws IOException {
-		return null;
-	}
-
-	public synchronized InputStream getInputStream() throws IOException {
-		if (!connected)
-			connect();
-		return connection.getInputStream();
-	}
-
-	public URL getResolvedURL() {
-		return resolvedURL;
-	}
-
-	public URL getURLAsLocal() throws IOException {
-		connect(true); // connect and force caching if necessary
-		URL u = connection.getURL();
-		String up = u.getProtocol();
-		if (!up.equals(PlatformURLHandler.FILE) && !up.equals(PlatformURLHandler.JAR) && !up.startsWith(PlatformURLHandler.BUNDLE))
-			throw new IOException(NLS.bind(Messages.url_noaccess, up));
-		return u;
-	}
-
-	//TODO consider refactoring this method... it is too long
-	private URL getURLInCache() throws IOException {
-
-		if (!allowCaching())
-			return null; // target should not be cached
-
-		if (isInCache)
-			return cachedURL;
-
-		if (cacheLocation == null | cacheIndex == null)
-			return null; // not caching
-
-		// check if we are dealing with a .jar/ .zip
-		String file = ""; //$NON-NLS-1$
-		String jarEntry = null;
-		if (isJar) {
-			file = url.getFile();
-			int ix = file.lastIndexOf(PlatformURLHandler.JAR_SEPARATOR);
-			if (ix != -1) {
-				jarEntry = file.substring(ix + PlatformURLHandler.JAR_SEPARATOR.length());
-				file = file.substring(0, ix);
-			}
-		} else {
-			file = url.getFile();
-			jarEntry = null;
-		}
-
-		// check for cached entry
-		String tmp = (String) cacheIndex.get(file);
-
-		// check for "not found" marker
-		if (tmp != null && tmp == NOT_FOUND)
-			throw new IOException();
-
-		// validate cache entry
-		if (tmp != null && !(new File(tmp)).exists()) {
-			tmp = null;
-			cacheIndex.remove(url.getFile());
-		}
-
-		// found in cache
-		if (tmp != null) {
-			if (isJar) {
-				if (DEBUG && DEBUG_CACHE_LOOKUP)
-					debug("Jar located in cache as " + tmp); //$NON-NLS-1$
-				tmp = PlatformURLHandler.FILE + PlatformURLHandler.PROTOCOL_SEPARATOR + tmp + PlatformURLHandler.JAR_SEPARATOR + jarEntry;
-				cachedURL = new URL(PlatformURLHandler.JAR, null, -1, tmp);
-			} else {
-				if (DEBUG && DEBUG_CACHE_LOOKUP)
-					debug("Located in cache as " + tmp); //$NON-NLS-1$
-				cachedURL = new URL(PlatformURLHandler.FILE, null, -1, tmp);
-			}
-			isInCache = true;
-		} else {
-			// attemp to cache
-			int ix = file.lastIndexOf("/"); //$NON-NLS-1$
-			tmp = file.substring(ix + 1);
-			tmp = cacheLocation + filePrefix + Long.toString((new java.util.Date()).getTime()) + "_" + tmp; //$NON-NLS-1$
-			tmp = tmp.replace(File.separatorChar, '/');
-			if (isJar) {
-				tmp = PlatformURLHandler.FILE + PlatformURLHandler.PROTOCOL_SEPARATOR + tmp + PlatformURLHandler.JAR_SEPARATOR + jarEntry;
-				cachedURL = new URL(PlatformURLHandler.JAR, null, -1, tmp);
-			} else
-				cachedURL = new URL(PlatformURLHandler.FILE, null, -1, tmp);
-			copyToCache();
-		}
-
-		return cachedURL;
-	}
-
-	/*
-	 * to be implemented by subclass
-	 * @return URL resolved URL
-	 */
-	protected URL resolve() throws IOException {
-		// TODO throw UnsupportedOperationException instead - this is a bug in subclass, not an actual failure
-		throw new IOException();
-	}
-
-	protected String getId(String spec) {
-		int i = spec.lastIndexOf('_');
-		return i >= 0 ? spec.substring(0, i) : spec;
-	}
-
-	protected String getVersion(String spec) {
-		int i = spec.lastIndexOf('_');
-		return i >= 0 ? spec.substring(i + 1, spec.length()) : ""; //$NON-NLS-1$
-	}
-
-	void setResolvedURL(URL url) throws IOException {
-		if (url == null)
-			throw new IOException();
-		if (resolvedURL != null)
-			return;
-		int ix = url.getFile().lastIndexOf(PlatformURLHandler.JAR_SEPARATOR);
-		isJar = -1 != ix;
-		// Resolved URLs containing !/ separator are assumed to be jar URLs.
-		// If the resolved protocol is not jar, new jar URL is created.
-		if (isJar && !url.getProtocol().equals(PlatformURLHandler.JAR))
-			url = new URL(PlatformURLHandler.JAR, "", -1, url.toExternalForm()); //$NON-NLS-1$
-		resolvedURL = url;
-	}
-
-	private boolean shouldCache(boolean asLocal) {
-
-		// don't cache files that are known to be local
-		String rp = resolvedURL.getProtocol();
-		String rf = resolvedURL.getFile();
-		if (rp.equals(PlatformURLHandler.FILE))
-			return false;
-		if (rp.equals(PlatformURLHandler.JAR) && (rf.startsWith(PlatformURLHandler.FILE)))
-			return false;
-
-		// for other files force caching if local connection was requested
-		if (asLocal)
-			return true;
-
-		// for now cache all files
-		// XXX: add cache policy support
-		return true;
-	}
-
-	static void shutdown() {
-		if (indexName != null && cacheLocation != null) {
-			// weed out "not found" entries
-			Enumeration keys = cacheIndex.keys();
-			String key;
-			Object value;
-			while (keys.hasMoreElements()) {
-				key = (String) keys.nextElement();
-				value = cacheIndex.get(key);
-				if (value == NOT_FOUND)
-					cacheIndex.remove(key);
-			}
-			//if the cache index is empty we don't need to save it
-			if (cacheIndex.size() == 0)
-				return;
-			try {
-				// try to save cache index
-				FileOutputStream fos = null;
-				fos = new FileOutputStream(cacheLocation + indexName);
-				try {
-					cacheIndex.store(fos, null);
-					fos.flush();
-					fos.getFD().sync();
-				} finally {
-					fos.close();
-				}
-			} catch (IOException e) {
-				// failed to store cache index ... ignore
-			}
-		}
-	}
-
-	//TODO consider splitting this method into two or more steps - it is too long 
-	static void startup(String location, String os, String ws, String nl) {
-
-		PlatformURLConnection.os = os;
-		PlatformURLConnection.ws = ws;
-		PlatformURLConnection.nl = nl;
-
-		verifyLocation(location); // check for platform location, ignore errors
-		String cacheProps = location.trim();
-		if (!cacheProps.endsWith(File.separator))
-			cacheProps += File.separator;
-		cacheProps += CACHE_PROP;
-		File cachePropFile = new File(cacheProps);
-		Properties props = null;
-		FileInputStream fis;
-
-		if (cachePropFile.exists()) {
-			// load existing properties	
-			try {
-				props = new Properties();
-				fis = new FileInputStream(cachePropFile);
-				try {
-					props.load(fis);
-				} finally {
-					fis.close();
-				}
-			} catch (IOException e) {
-				props = null;
-			}
-		}
-
-		if (props == null) {
-			// first time up, or failed to load previous settings
-			props = new Properties();
-
-			String tmp = System.getProperty("user.home"); //$NON-NLS-1$
-			if (!tmp.endsWith(File.separator))
-				tmp += File.separator;
-			tmp += CACHE_DIR;
-			props.put(CACHE_LOCATION_PROP, tmp);
-
-			tmp = Long.toString((new java.util.Date()).getTime());
-			props.put(CACHE_PREFIX_PROP, tmp);
-
-			tmp += CACHE_INDEX;
-			props.put(CACHE_INDEX_PROP, tmp);
-
-			// save for next time around
-			FileOutputStream fos = null;
-			try {
-				fos = new FileOutputStream(cachePropFile);
-				try {
-					props.store(fos, null);
-					fos.flush();
-					fos.getFD().sync();
-				} finally {
-					fos.close();
-				}
-			} catch (IOException e) {
-				// failed to store cache location metadata ... ignore
-			}
-		}
-
-		// remember settings for shutdown processing
-		filePrefix = (String) props.get(CACHE_PREFIX_PROP);
-		indexName = (String) props.get(CACHE_INDEX_PROP);
-		cacheLocation = (String) props.get(CACHE_LOCATION_PROP);
-
-		if (DEBUG) {
-			debugStartup("Cache location: " + cacheLocation); //$NON-NLS-1$
-			debugStartup("Cache index: " + indexName); //$NON-NLS-1$
-			debugStartup("Cache file prefix: " + filePrefix); //$NON-NLS-1$
-		}
-
-		// create cache directory structure if needed
-		if (!verifyLocation(cacheLocation)) {
-			indexName = null;
-			cacheLocation = null;
-			if (DEBUG)
-				debugStartup("Failed to create cache directory structure. Caching suspended"); //$NON-NLS-1$
-			return;
-		}
-
-		// attempt to initialize cache index
-		if (cacheLocation != null && indexName != null) {
-			try {
-				fis = new FileInputStream(cacheLocation + indexName);
-				try {
-					cacheIndex.load(fis);
-				} finally {
-					fis.close();
-				}
-			} catch (IOException e) {
-				if (DEBUG)
-					debugStartup("Failed to initialize cache"); //$NON-NLS-1$
-			}
-		}
-	}
-
-	private static boolean verifyLocation(String location) {
-		// verify cache directory exists. Create if needed
-		File cacheDir = new File(location);
-		if (cacheDir.exists())
-			return true;
-		return cacheDir.mkdirs();
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/boot/PlatformURLHandler.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/boot/PlatformURLHandler.java
deleted file mode 100644
index 4c7a3ab..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/boot/PlatformURLHandler.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.boot;
-
-import java.io.IOException;
-import java.lang.reflect.Constructor;
-import java.net.*;
-import java.util.Hashtable;
-import org.eclipse.core.internal.runtime.Messages;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.service.url.AbstractURLStreamHandlerService;
-
-/**
- * URL handler for the "platform" protocol
- */
-public class PlatformURLHandler extends AbstractURLStreamHandlerService {
-
-	private static Hashtable connectionType = new Hashtable();
-
-	// URL protocol designations
-	public static final String PROTOCOL = "platform"; //$NON-NLS-1$
-	public static final String FILE = "file"; //$NON-NLS-1$
-	public static final String JAR = "jar"; //$NON-NLS-1$
-	public static final String BUNDLE = "bundle"; //$NON-NLS-1$
-	public static final String JAR_SEPARATOR = "!/"; //$NON-NLS-1$
-	public static final String PROTOCOL_SEPARATOR = ":"; //$NON-NLS-1$
-
-	public PlatformURLHandler() {
-		super();
-	}
-
-	public URLConnection openConnection(URL url) throws IOException {
-		// Note: openConnection() method is made public (rather than protected)
-		//       to enable request delegation from proxy handlers
-		String spec = url.getFile().trim();
-		if (spec.startsWith("/")) //$NON-NLS-1$
-			spec = spec.substring(1);
-		int ix = spec.indexOf("/"); //$NON-NLS-1$
-		if (ix == -1)
-			throw new MalformedURLException(NLS.bind(Messages.url_invalidURL, url.toExternalForm()));
-
-		String type = spec.substring(0, ix);
-		Constructor construct = (Constructor) connectionType.get(type);
-		if (construct == null)
-			throw new MalformedURLException(NLS.bind(Messages.url_badVariant, type));
-
-		PlatformURLConnection connection = null;
-		try {
-			connection = (PlatformURLConnection) construct.newInstance(new Object[] {url});
-		} catch (Exception e) {
-			throw new IOException(NLS.bind(Messages.url_createConnection, e.getMessage()));
-		}
-		connection.setResolvedURL(connection.resolve());
-		return connection;
-	}
-
-	public static void register(String type, Class connectionClass) {
-		try {
-			Constructor c = connectionClass.getConstructor(new Class[] {URL.class});
-			connectionType.put(type, c);
-		} catch (NoSuchMethodException e) {
-			//don't register connection classes that don't conform to the spec
-		}
-	}
-	
-	public static void unregister(String type) {
-		connectionType.remove(type);
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/preferences/InitLegacyPreferences.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/preferences/InitLegacyPreferences.java
deleted file mode 100644
index d43beae..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/preferences/InitLegacyPreferences.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.preferences;
-
-import org.eclipse.core.internal.runtime.InternalPlatform;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Plugin;
-
-/**
- * Provides initialization of the legacy preferences as described in
- * the Plugin class.
- */
-public class InitLegacyPreferences implements ILegacyPreferences {
-	/**
-	 * The method tries to initialize the preferences using the legacy Plugin method.
-	 * 
-	 * @param object - plugin to initialize
-	 * @param name - ID of the plugin to be initialized
-	 * 
-	 * @see Plugin#initializeDefaultPluginPreferences
-	 * 
-	 * @deprecated
-	 */
-	public Object init(Object object, String name) {
-		Plugin plugin = null;
-		if (object instanceof Plugin)
-			plugin = (Plugin) object;
-		// No extension exists. Get the plug-in object and call #initializeDefaultPluginPreferences().
-		// We can only call this if the runtime compatibility layer is installed.
-		if (plugin == null && InternalPlatform.getDefault().getBundle(org.eclipse.core.internal.runtime.CompatibilityHelper.PI_RUNTIME_COMPATIBILITY) != null)
-			plugin = Platform.getPlugin(name);
-		if (plugin == null) {
-			if (InternalPlatform.DEBUG_PLUGIN_PREFERENCES)
-				InternalPlatform.message("No plug-in object available to set plug-in default preference overrides for:" + name); //$NON-NLS-1$
-			return null;
-		}
-		if (InternalPlatform.DEBUG_PLUGIN_PREFERENCES)
-			InternalPlatform.message("Applying plug-in default preference overrides for plug-in: " + plugin.getDescriptor().getUniqueIdentifier()); //$NON-NLS-1$
-
-		plugin.internalInitializeDefaultPluginPreferences();
-		return plugin;
-	}
-
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/preferences/PreferenceForwarder.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/preferences/PreferenceForwarder.java
deleted file mode 100644
index 8d27ba3..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/preferences/PreferenceForwarder.java
+++ /dev/null
@@ -1,877 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.preferences;
-
-import java.io.*;
-import java.util.Iterator;
-import java.util.Properties;
-import org.eclipse.core.internal.runtime.RuntimeLog;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.preferences.DefaultScope;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.osgi.service.prefs.BackingStoreException;
-
-/**
- * This class represents a convenience layer between the Eclipse 3.0
- * preferences and pre-3.0 preferences. It acts as a bridge between the 
- * org.eclipse.core.runtime.Preferences object associated with a particular plug-in
- * object, and its corresponding preference node in the 3.0 preference node
- * hierarchy.
- * 
- * @since 3.0
- */
-public class PreferenceForwarder extends Preferences implements IEclipsePreferences.IPreferenceChangeListener, IEclipsePreferences.INodeChangeListener {
-
-	private static final byte[] BYTE_ARRAY_DEFAULT_DEFAULT = new byte[0];
-
-	PreferencesService a;
-
-	private IEclipsePreferences pluginRoot = (IEclipsePreferences) PreferencesService.getDefault().getRootNode().node(InstanceScope.SCOPE);
-	private DefaultPreferences defaultsRoot = (DefaultPreferences) PreferencesService.getDefault().getRootNode().node(DefaultScope.SCOPE);
-	private String pluginID;
-	private Object plugin;
-	// boolean to check to see if we should re-wrap and forward change
-	// events coming from the new runtime APIs.
-	private boolean notify = true;
-
-	/*
-	 * Used for test suites only.
-	 */
-	public PreferenceForwarder(String pluginID) {
-		this(null, pluginID);
-	}
-
-	public PreferenceForwarder(Object plugin, String pluginID) {
-		super();
-		this.plugin = plugin;
-		this.pluginID = pluginID;
-	}
-
-	/*
-	 * @see org.eclipse.core.runtime.preferences.IEclipsePreferences.INodeChangeListener#added(org.eclipse.core.runtime.preferences.IEclipsePreferences.NodeChangeEvent)
-	 */
-	public synchronized void added(IEclipsePreferences.NodeChangeEvent event) {
-		if (listeners.size() > 0 && pluginID.equals(event.getChild().name())) {
-			try {
-				EclipsePreferences prefs = (EclipsePreferences) event.getChild();
-				prefs.addPreferenceChangeListener(this);
-			} catch (ClassCastException e) {
-				throw new RuntimeException("Plug-in preferences must be instances of EclipsePreferences: " + e.getMessage()); //$NON-NLS-1$
-			}
-		}
-	}
-
-	/*
-	 * @see org.eclipse.core.runtime.preferences.IEclipsePreferences.INodeChangeListener#removed(org.eclipse.core.runtime.preferences.IEclipsePreferences.NodeChangeEvent)
-	 */
-	public synchronized void removed(IEclipsePreferences.NodeChangeEvent event) {
-		if (listeners.size() > 0 && pluginID.equals(event.getChild().name())) {
-			try {
-				EclipsePreferences prefs = (EclipsePreferences) event.getChild();
-				prefs.removePreferenceChangeListener(this);
-			} catch (ClassCastException e) {
-				throw new RuntimeException("Plug-in preferences must be instances of EclipsePreferences: " + e.getMessage()); //$NON-NLS-1$
-			}
-		}
-	}
-
-	/**
-	 * Adds a property change listener to this preference object.
-	 * Has no affect if the identical listener is already registered.
-	 *
-	 * @param listener a property change listener
-	 */
-	public synchronized void addPropertyChangeListener(IPropertyChangeListener listener) {
-		if (listeners.size() == 0) {
-			EclipsePreferences prefs = getPluginPreferences(false);
-			if (prefs != null) {
-				prefs.addPreferenceChangeListener(this);
-			}
-			pluginRoot.addNodeChangeListener(this);
-		}
-		listeners.add(listener);
-	}
-
-
-	/*
-	 * @see org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener#preferenceChange(org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent)
-	 */
-	public void preferenceChange(IEclipsePreferences.PreferenceChangeEvent event) {
-		// if we are the ones making this change, then don't broadcast
-		if (!notify)
-			return;
-		Object oldValue = event.getOldValue();
-		Object newValue = event.getNewValue();
-		String key = event.getKey();
-		if (newValue == null)
-			newValue = getDefault(key, oldValue);
-		else if (oldValue == null)
-			oldValue = getDefault(key, newValue);
-		firePropertyChangeEvent(key, oldValue, newValue);
-	}
-
-	private EclipsePreferences getPluginPreferences(boolean create) {
-		try {
-			if (!create && !pluginRoot.nodeExists(pluginID))
-				return null;
-		} catch (BackingStoreException e) {
-			return null;
-		}
-		try {
-			return (EclipsePreferences) pluginRoot.node(pluginID);
-		} catch (ClassCastException e) {
-			throw new RuntimeException("Plug-in preferences must be instances of EclipsePreferences: " + e.getMessage()); //$NON-NLS-1$
-		}
-	}
-
-	private IEclipsePreferences getDefaultPreferences() {
-		return defaultsRoot.node(pluginID, plugin);
-	}
-
-	/**
-	 * Removes the given listener from this preference object.
-	 * Has no affect if the listener is not registered.
-	 *
-	 * @param listener a property change listener
-	 */
-	public synchronized void removePropertyChangeListener(IPropertyChangeListener listener) {
-		listeners.remove(listener);
-		if (listeners.size() == 0) {
-			EclipsePreferences prefs = getPluginPreferences(false);
-			if (prefs != null) {
-				prefs.removePreferenceChangeListener(this);
-			}
-			pluginRoot.removeNodeChangeListener(this);
-		}
-	}
-
-
-	/**
-	 * Does its best at determining the default value for the given key. Checks the
-	 * given object's type and then looks in the list of defaults to see if a value
-	 * exists. If not or if there is a problem converting the value, the default default 
-	 * value for that type is returned.
-	 */
-	private Object getDefault(String key, Object obj) {
-		IEclipsePreferences defaults = getDefaultPreferences();
-		if (obj instanceof String)
-			return defaults.get(key, STRING_DEFAULT_DEFAULT);
-		else if (obj instanceof Integer)
-			return new Integer(defaults.getInt(key, INT_DEFAULT_DEFAULT));
-		else if (obj instanceof Double)
-			return new Double(defaults.getDouble(key, DOUBLE_DEFAULT_DEFAULT));
-		else if (obj instanceof Float)
-			return new Float(defaults.getFloat(key, FLOAT_DEFAULT_DEFAULT));
-		else if (obj instanceof Long)
-			return new Long(defaults.getLong(key, LONG_DEFAULT_DEFAULT));
-		else if (obj instanceof byte[])
-			return defaults.getByteArray(key, BYTE_ARRAY_DEFAULT_DEFAULT);
-		else if (obj instanceof Boolean)
-			return defaults.getBoolean(key, BOOLEAN_DEFAULT_DEFAULT) ? Boolean.TRUE : Boolean.FALSE;
-		else
-			return null;
-	}
-
-	/**
-	 * Returns whether the given property is known to this preference object,
-	 * either by having an explicit setting or by having a default
-	 * setting.
-	 *
-	 * @param name the name of the property
-	 * @return <code>true</code> if either a current value or a default
-	 *  value is known for the named property, and <code>false</code>otherwise
-	 */
-	public boolean contains(String name) {
-		if (name == null)
-			return false;
-		String value = getPluginPreferences(true).get(name, null);
-		if (value != null)
-			return true;
-		return getDefaultPreferences().get(name, null) != null;
-	}
-
-	/**
-	 * Returns the current value of the boolean-valued property with the
-	 * given name.
-	 * Returns the default-default value (<code>false</code>) if there
-	 * is no property with the given name, or if the current value 
-	 * cannot be treated as a boolean.
-	 *
-	 * @param name the name of the property
-	 * @return the boolean-valued property
-	 */
-	public boolean getBoolean(String name) {
-		return getPluginPreferences(true).getBoolean(name, getDefaultPreferences().getBoolean(name, BOOLEAN_DEFAULT_DEFAULT));
-	}
-
-	/**
-	 * Sets the current value of the boolean-valued property with the
-	 * given name.
-	 * <p>
-	 * A property change event is reported if the current value of the 
-	 * property actually changes from its previous value. In the event
-	 * object, the property name is the name of the property, and the
-	 * old and new values are wrapped as objects.
-	 * </p>
-	 * <p>
-	 * If the given value is the same as the corresponding default value
-	 * for the given property, the explicit setting is deleted.
-	 * Note that the recommended way of re-initializing a property to its
-	 * default value is to call <code>setToDefault</code>.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 * @param value the new current value of the property
-	 */
-	public void setValue(String name, boolean value) {
-		Boolean oldValue = getBoolean(name) ? Boolean.TRUE : Boolean.FALSE;
-		Boolean newValue = value ? Boolean.TRUE : Boolean.FALSE;
-		if (newValue == oldValue)
-			return;
-		try {
-			notify = false;
-			if (getDefaultBoolean(name) == value)
-				getPluginPreferences(true).remove(name);
-			else
-				getPluginPreferences(true).putBoolean(name, value);
-			firePropertyChangeEvent(name, oldValue, newValue);
-		} finally {
-			notify = true;
-		}
-	}
-
-	/**
-	 * Returns the default value for the boolean-valued property
-	 * with the given name.
-	 * Returns the default-default value (<code>false</code>) if there
-	 * is no default property with the given name, or if the default 
-	 * value cannot be treated as a boolean.
-	 *
-	 * @param name the name of the property
-	 * @return the default value of the named property
-	 */
-	public boolean getDefaultBoolean(String name) {
-		return getDefaultPreferences().getBoolean(name, BOOLEAN_DEFAULT_DEFAULT);
-	}
-
-	/**
-	 * Sets the default value for the boolean-valued property with the
-	 * given name. 
-	 * <p>
-	 * Note that the current value of the property is affected if
-	 * the property's current value was its old default value, in which
-	 * case it changes to the new default value. If the property's current
-	 * is different from its old default value, its current value is
-	 * unaffected. No property change events are reported by changing default
-	 * values.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 * @param value the new default value for the property
-	 */
-	public void setDefault(String name, boolean value) {
-		getDefaultPreferences().putBoolean(name, value);
-	}
-
-	/**
-	 * Returns the current value of the double-valued property with the
-	 * given name.
-	 * Returns the default-default value (<code>0.0</code>) if there
-	 * is no property with the given name, or if the current value 
-	 * cannot be treated as a double.
-	 *
-	 * @param name the name of the property
-	 * @return the double-valued property
-	 */
-	public double getDouble(String name) {
-		return getPluginPreferences(true).getDouble(name, getDefaultPreferences().getDouble(name, DOUBLE_DEFAULT_DEFAULT));
-	}
-
-	/**
-	 * Sets the current value of the double-valued property with the
-	 * given name.
-	 * <p>
-	 * A property change event is reported if the current value of the 
-	 * property actually changes from its previous value. In the event
-	 * object, the property name is the name of the property, and the
-	 * old and new values are wrapped as objects.
-	 * </p>
-	 * <p>
-	 * If the given value is the same as the corresponding default value
-	 * for the given property, the explicit setting is deleted.
-	 * Note that the recommended way of re-initializing a property to its
-	 * default value is to call <code>setToDefault</code>.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 * @param value the new current value of the property; must be 
-	 *   a number (not a NaN)
-	 */
-	public void setValue(String name, double value) {
-		if (Double.isNaN(value))
-			throw new IllegalArgumentException();
-		final double doubleValue = getDouble(name);
-		if (value == doubleValue)
-			return;
-		Double oldValue = new Double(doubleValue);
-		Double newValue = new Double(value);
-		try {
-			notify = false;
-			if (getDefaultDouble(name) == value)
-				getPluginPreferences(true).remove(name);
-			else
-				getPluginPreferences(true).putDouble(name, value);
-			firePropertyChangeEvent(name, oldValue, newValue);
-		} finally {
-			notify = true;
-		}
-	}
-
-	/**
-	 * Returns the default value for the double-valued property
-	 * with the given name.
-	 * Returns the default-default value (<code>0.0</code>) if there
-	 * is no default property with the given name, or if the default 
-	 * value cannot be treated as a double.
-	 *
-	 * @param name the name of the property
-	 * @return the default value of the named property
-	 */
-	public double getDefaultDouble(String name) {
-		return getDefaultPreferences().getDouble(name, DOUBLE_DEFAULT_DEFAULT);
-	}
-
-	/**
-	 * Sets the default value for the double-valued property with the
-	 * given name. 
-	 * <p>
-	 * Note that the current value of the property is affected if
-	 * the property's current value was its old default value, in which
-	 * case it changes to the new default value. If the property's current
-	 * is different from its old default value, its current value is
-	 * unaffected. No property change events are reported by changing default
-	 * values.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 * @param value the new default value for the property; must be 
-	 *   a number (not a NaN)
-	 */
-	public void setDefault(String name, double value) {
-		if (Double.isNaN(value))
-			throw new IllegalArgumentException();
-		getDefaultPreferences().putDouble(name, value);
-	}
-
-	/**
-	 * Returns the current value of the float-valued property with the
-	 * given name.
-	 * Returns the default-default value (<code>0.0f</code>) if there
-	 * is no property with the given name, or if the current value 
-	 * cannot be treated as a float.
-	 *
-	 * @param name the name of the property
-	 * @return the float-valued property
-	 */
-	public float getFloat(String name) {
-		return getPluginPreferences(true).getFloat(name, getDefaultPreferences().getFloat(name, FLOAT_DEFAULT_DEFAULT));
-	}
-
-	/**
-	 * Sets the current value of the float-valued property with the
-	 * given name.
-	 * <p>
-	 * A property change event is reported if the current value of the 
-	 * property actually changes from its previous value. In the event
-	 * object, the property name is the name of the property, and the
-	 * old and new values are wrapped as objects.
-	 * </p>
-	 * <p>
-	 * If the given value is the same as the corresponding default value
-	 * for the given property, the explicit setting is deleted.
-	 * Note that the recommended way of re-initializing a property to its
-	 * default value is to call <code>setToDefault</code>.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 * @param value the new current value of the property; must be 
-	 *   a number (not a NaN)
-	 */
-	public void setValue(String name, float value) {
-		if (Float.isNaN(value))
-			throw new IllegalArgumentException();
-		final float floatValue = getFloat(name);
-		if (value == floatValue)
-			return;
-		Float oldValue = new Float(floatValue);
-		Float newValue = new Float(value);
-		try {
-			notify = false;
-			if (getDefaultFloat(name) == value)
-				getPluginPreferences(true).remove(name);
-			else
-				getPluginPreferences(true).putFloat(name, value);
-			firePropertyChangeEvent(name, oldValue, newValue);
-		} finally {
-			notify = true;
-		}
-	}
-
-	/**
-	 * Returns the default value for the float-valued property
-	 * with the given name.
-	 * Returns the default-default value (<code>0.0f</code>) if there
-	 * is no default property with the given name, or if the default 
-	 * value cannot be treated as a float.
-	 *
-	 * @param name the name of the property
-	 * @return the default value of the named property
-	 */
-	public float getDefaultFloat(String name) {
-		return getDefaultPreferences().getFloat(name, FLOAT_DEFAULT_DEFAULT);
-	}
-
-	/**
-	 * Sets the default value for the float-valued property with the
-	 * given name. 
-	 * <p>
-	 * Note that the current value of the property is affected if
-	 * the property's current value was its old default value, in which
-	 * case it changes to the new default value. If the property's current
-	 * is different from its old default value, its current value is
-	 * unaffected. No property change events are reported by changing default
-	 * values.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 * @param value the new default value for the property; must be 
-	 *   a number (not a NaN)
-	 */
-	public void setDefault(String name, float value) {
-		if (Float.isNaN(value))
-			throw new IllegalArgumentException();
-		getDefaultPreferences().putFloat(name, value);
-	}
-
-	/**
-	 * Returns the current value of the integer-valued property with the
-	 * given name.
-	 * Returns the default-default value (<code>0</code>) if there
-	 * is no property with the given name, or if the current value 
-	 * cannot be treated as an integter.
-	 *
-	 * @param name the name of the property
-	 * @return the int-valued property
-	 */
-	public int getInt(String name) {
-		return getPluginPreferences(true).getInt(name, getDefaultPreferences().getInt(name, INT_DEFAULT_DEFAULT));
-	}
-
-	/**
-	 * Sets the current value of the integer-valued property with the
-	 * given name.
-	 * <p>
-	 * A property change event is reported if the current value of the 
-	 * property actually changes from its previous value. In the event
-	 * object, the property name is the name of the property, and the
-	 * old and new values are wrapped as objects.
-	 * </p>
-	 * <p>
-	 * If the given value is the same as the corresponding default value
-	 * for the given property, the explicit setting is deleted.
-	 * Note that the recommended way of re-initializing a property to its
-	 * default value is to call <code>setToDefault</code>.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 * @param value the new current value of the property
-	 */
-	public void setValue(String name, int value) {
-		final int intValue = getInt(name);
-		if (value == intValue)
-			return;
-		Integer oldValue = new Integer(intValue);
-		Integer newValue = new Integer(value);
-		try {
-			notify = false;
-			if (getDefaultInt(name) == value)
-				getPluginPreferences(true).remove(name);
-			else
-				getPluginPreferences(true).putInt(name, value);
-			firePropertyChangeEvent(name, oldValue, newValue);
-		} finally {
-			notify = true;
-		}
-	}
-
-	/**
-	 * Returns the default value for the integer-valued property
-	 * with the given name.
-	 * Returns the default-default value (<code>0</code>) if there
-	 * is no default property with the given name, or if the default 
-	 * value cannot be treated as an integer.
-	 *
-	 * @param name the name of the property
-	 * @return the default value of the named property
-	 */
-	public int getDefaultInt(String name) {
-		return getDefaultPreferences().getInt(name, INT_DEFAULT_DEFAULT);
-	}
-
-	/**
-	 * Sets the default value for the integer-valued property with the
-	 * given name. 
-	 * <p>
-	 * Note that the current value of the property is affected if
-	 * the property's current value was its old default value, in which
-	 * case it changes to the new default value. If the property's current
-	 * is different from its old default value, its current value is
-	 * unaffected. No property change events are reported by changing default
-	 * values.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 * @param value the new default value for the property
-	 */
-	public void setDefault(String name, int value) {
-		getDefaultPreferences().putInt(name, value);
-	}
-
-	/**
-	 * Returns the current value of the long-valued property with the
-	 * given name.
-	 * Returns the default-default value (<code>0L</code>) if there
-	 * is no property with the given name, or if the current value 
-	 * cannot be treated as a long.
-	 *
-	 * @param name the name of the property
-	 * @return the long-valued property
-	 */
-	public long getLong(String name) {
-		return getPluginPreferences(true).getLong(name, getDefaultPreferences().getLong(name, LONG_DEFAULT_DEFAULT));
-	}
-
-	/**
-	 * Sets the current value of the long-valued property with the
-	 * given name.
-	 * <p>
-	 * A property change event is reported if the current value of the 
-	 * property actually changes from its previous value. In the event
-	 * object, the property name is the name of the property, and the
-	 * old and new values are wrapped as objects.
-	 * </p>
-	 * <p>
-	 * If the given value is the same as the corresponding default value
-	 * for the given property, the explicit setting is deleted.
-	 * Note that the recommended way of re-initializing a property to its
-	 * default value is to call <code>setToDefault</code>.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 * @param value the new current value of the property
-	 */
-	public void setValue(String name, long value) {
-		final long longValue = getLong(name);
-		if (value == longValue)
-			return;
-		Long oldValue = new Long(longValue);
-		Long newValue = new Long(value);
-		try {
-			notify = false;
-			if (getDefaultLong(name) == value)
-				getPluginPreferences(true).remove(name);
-			else
-				getPluginPreferences(true).putLong(name, value);
-			firePropertyChangeEvent(name, oldValue, newValue);
-		} finally {
-			notify = true;
-		}
-	}
-
-	/**
-	 * Returns the default value for the long-valued property
-	 * with the given name.
-	 * Returns the default-default value (<code>0L</code>) if there
-	 * is no default property with the given name, or if the default 
-	 * value cannot be treated as a long.
-	 *
-	 * @param name the name of the property
-	 * @return the default value of the named property
-	 */
-	public long getDefaultLong(String name) {
-		return getDefaultPreferences().getLong(name, LONG_DEFAULT_DEFAULT);
-	}
-
-	/**
-	 * Sets the default value for the long-valued property with the
-	 * given name. 
-	 * <p>
-	 * Note that the current value of the property is affected if
-	 * the property's current value was its old default value, in which
-	 * case it changes to the new default value. If the property's current
-	 * is different from its old default value, its current value is
-	 * unaffected. No property change events are reported by changing default
-	 * values.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 * @param value the new default value for the property
-	 */
-	public void setDefault(String name, long value) {
-		getDefaultPreferences().putLong(name, value);
-	}
-
-	/**
-	 * Returns the current value of the string-valued property with the
-	 * given name.
-	 * Returns the default-default value (the empty string <code>""</code>)
-	 * if there is no property with the given name.
-	 *
-	 * @param name the name of the property
-	 * @return the string-valued property
-	 */
-	public String getString(String name) {
-		return getPluginPreferences(true).get(name, getDefaultPreferences().get(name, STRING_DEFAULT_DEFAULT));
-	}
-
-	/**
-	 * Sets the current value of the string-valued property with the
-	 * given name.
-	 * <p>
-	 * A property change event is reported if the current value of the 
-	 * property actually changes from its previous value. In the event
-	 * object, the property name is the name of the property, and the
-	 * old and new values are wrapped as objects.
-	 * </p>
-	 * <p>
-	 * If the given value is the same as the corresponding default value
-	 * for the given property, the explicit setting is deleted.
-	 * Note that the recommended way of re-initializing a property to its
-	 * default value is to call <code>setToDefault</code>.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 * @param value the new current value of the property
-	 */
-	public void setValue(String name, String value) {
-		if (value == null)
-			throw new IllegalArgumentException();
-		String oldValue = getString(name);
-		if (value.equals(oldValue))
-			return;
-		try {
-			notify = false;
-			if (getDefaultString(name).equals(value))
-				getPluginPreferences(true).remove(name);
-			else
-				getPluginPreferences(true).put(name, value);
-			firePropertyChangeEvent(name, oldValue, value);
-		} finally {
-			notify = true;
-		}
-	}
-
-	/**
-	 * Returns the default value for the string-valued property
-	 * with the given name.
-	 * Returns the default-default value (the empty string <code>""</code>) 
-	 * is no default property with the given name, or if the default 
-	 * value cannot be treated as a string.
-	 *
-	 * @param name the name of the property
-	 * @return the default value of the named property
-	 */
-	public String getDefaultString(String name) {
-		return getDefaultPreferences().get(name, STRING_DEFAULT_DEFAULT);
-	}
-
-	/**
-	 * Sets the default value for the string-valued property with the
-	 * given name. 
-	 * <p>
-	 * Note that the current value of the property is affected if
-	 * the property's current value was its old default value, in which
-	 * case it changes to the new default value. If the property's current
-	 * is different from its old default value, its current value is
-	 * unaffected. No property change events are reported by changing default
-	 * values.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 * @param value the new default value for the property
-	 */
-	public void setDefault(String name, String value) {
-		if (value == null)
-			throw new IllegalArgumentException();
-		getDefaultPreferences().put(name, value);
-	}
-
-	/**
-	 * Returns whether the property with the given name has the default value in
-	 * virtue of having no explicitly set value.
-	 *
-	 * @param name the name of the property
-	 * @return <code>true</code> if the property has no explicitly set value,
-	 * and <code>false</code> otherwise (including the case where the property
-	 * is unknown to this object)
-	 */
-	public boolean isDefault(String name) {
-		if (name == null)
-			return false;
-		return getPluginPreferences(true).get(name, null) == null;
-	}
-
-	/**
-	 * Sets the current value of the property with the given name back
-	 * to its default value. Has no effect if the property does not have
-	 * its own current value.
-	 * <p>
-	 * Note that the recommended way of re-initializing a property to the
-	 * appropriate default value is to call <code>setToDefault</code>.
-	 * This is implemented by removing the named value from the object, 
-	 * thereby exposing the default value.
-	 * </p>
-	 * <p>
-	 * A property change event is always reported. In the event
-	 * object, the property name is the name of the property, and the
-	 * old and new values are either strings, or <code>null</code> 
-	 * indicating the default-default value.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 */
-	public void setToDefault(String name) {
-		IEclipsePreferences preferences = getPluginPreferences(true);
-		Object oldValue = preferences.get(name, null);
-		if (oldValue != null)
-			preferences.remove(name);
-	}
-
-	/**
-	 * Returns a list of all properties known to this preference object which
-	 * have current values other than their default value.
-	 *
-	 * @return an array of property names 
-	 */
-	public String[] propertyNames() {
-		return getPluginPreferences(true).keys();
-	}
-
-	/**
-	 * Returns a list of all properties known to this preference object which
-	 * have default values other than their default-default value.
-	 *
-	 * @return an array of property names 
-	 */
-	public String[] defaultPropertyNames() {
-		try {
-			return getDefaultPreferences().keys();
-		} catch (BackingStoreException e) {
-			logError(e.getMessage(), e);
-			return new String[0];
-		}
-	}
-
-	/**
-	 * Returns whether the current values in this preference object
-	 * require saving.
-	 *
-	 * @return <code>true</code> if at least one of the properties
-	 *  known to this preference object has a current value different from its
-	 *  default value, and <code>false</code> otherwise
-	 */
-	public boolean needsSaving() {
-		return getPluginPreferences(true).isDirty();
-	}
-
-	/**
-	 * Flush the values of these plug-in preferences to disk.
-	 * 
-	 * @throws BackingStoreException
-	 */
-	public void flush() throws BackingStoreException {
-		IEclipsePreferences node = getPluginPreferences(false);
-		if (node != null)
-			node.flush();
-	}
-
-	/*
-	 * Something bad happened so log it. 
-	 */
-	private void logError(String message, Exception e) {
-		IStatus status = new Status(IStatus.ERROR, PrefsMessages.OWNER_NAME, IStatus.ERROR, message, e);
-		RuntimeLog.log(status);
-	}
-
-	/*
-	 * @see org.eclipse.core.runtime.Preferences#load(java.io.InputStream)
-	 */
-	public void load(InputStream in) throws IOException {
-		Properties result = new Properties();
-		result.load(in);
-		convertFromProperties(result);
-		// We loaded the prefs from a non-default location so now
-		// store them to disk. This also clears the dirty flag
-		// and therefore sets the #needsSaving() state correctly.
-		try {
-			flush();
-		} catch (BackingStoreException e) {
-			throw new IOException(e.getMessage());
-		}
-	}
-
-	/*
-	 * @see org.eclipse.core.runtime.Preferences#store(java.io.OutputStream, java.lang.String)
-	 */
-	public void store(OutputStream out, String header) throws IOException {
-		Properties result = convertToProperties();
-		result.store(out, header);
-		// We stored the prefs to a non-default location but the spec
-		// says that the dirty state is cleared so we want to store
-		// them to disk at the default location as well.
-		try {
-			flush();
-		} catch (BackingStoreException e) {
-			throw new IOException(e.getMessage());
-		}
-	}
-
-	private void convertFromProperties(Properties props) {
-		IEclipsePreferences preferences = getPluginPreferences(true);
-		for (Iterator i = props.keySet().iterator(); i.hasNext();) {
-			String key = (String) i.next();
-			String value = props.getProperty(key);
-			if (value != null)
-				preferences.put(key, value);
-		}
-	}
-
-	public String toString() {
-		return "PreferenceForwarder(" + pluginID + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	/*
-	 * Convert the preferences in this node to a properties file
-	 * suitable for persistence.
-	 */
-	private Properties convertToProperties() {
-		Properties result = new Properties();
-		String[] keys = propertyNames();
-		for (int i = 0; i < keys.length; i++) {
-			String key = keys[i];
-			String value = getString(key);
-			if (!Preferences.STRING_DEFAULT_DEFAULT.equals(value))
-				result.put(key, value);
-		}
-		return result;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/preferences/ProductPreferencesService.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/preferences/ProductPreferencesService.java
deleted file mode 100644
index 67bb827..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/preferences/ProductPreferencesService.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.preferences;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Properties;
-import org.eclipse.core.internal.runtime.InternalPlatform;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.preferences.IProductPreferencesService;
-import org.osgi.framework.Bundle;
-
-public class ProductPreferencesService implements IProductPreferencesService {
-
-	private static final IPath NL_DIR = new Path("$nl$"); //$NON-NLS-1$
-
-	// declared in org.eclipse.ui.branding.IProductConstants
-	public static final String PRODUCT_KEY = "preferenceCustomization"; //$NON-NLS-1$
-	private static final String LEGACY_PRODUCT_CUSTOMIZATION_FILENAME = "plugin_customization.ini"; //$NON-NLS-1$
-	private static final String PROPERTIES_FILE_EXTENSION = "properties"; //$NON-NLS-1$
-
-	private boolean initialized = false;
-	private String customizationValue = null; // it won't change during the product run time
-	private Bundle customizationBundle = null;
-	private String productID = null;
-
-	private void initValues() {
-		if (initialized)
-			return;
-		initialized = true;
-
-		IProduct product = Platform.getProduct();
-		if (product == null) {
-			if (InternalPlatform.DEBUG_PLUGIN_PREFERENCES)
-				InternalPlatform.message("Product not available to set product default preference overrides."); //$NON-NLS-1$
-			return;
-		}
-		productID = product.getId();
-		if (productID == null) {
-			if (InternalPlatform.DEBUG_PLUGIN_PREFERENCES)
-				InternalPlatform.message("Product ID not available to apply product-level preference defaults."); //$NON-NLS-1$
-			return;
-		}
-		customizationBundle = product.getDefiningBundle();
-		if (customizationBundle == null) {
-			if (InternalPlatform.DEBUG_PLUGIN_PREFERENCES)
-				InternalPlatform.message("Bundle not available to apply product-level preference defaults for product id: " + productID); //$NON-NLS-1$
-			return;
-		}
-		customizationValue = product.getProperty(PRODUCT_KEY);
-		if (customizationValue == null) {
-			if (InternalPlatform.DEBUG_PLUGIN_PREFERENCES)
-				InternalPlatform.message("Product : " + productID + " does not define preference customization file. Using legacy file: plugin_customization.ini"); //$NON-NLS-1$//$NON-NLS-2$
-			customizationValue = LEGACY_PRODUCT_CUSTOMIZATION_FILENAME;
-		}
-	}
-
-	public Properties getProductCustomization() {
-		initValues();
-		URL url = null;
-		if (customizationValue != null) {
-			// try to convert the key to a URL
-			try {
-				url = new URL(customizationValue);
-			} catch (MalformedURLException e) {
-				// didn't work so treat it as a filename
-				url = FileLocator.find(customizationBundle, new Path(customizationValue), null);
-			}
-		}
-
-		if (url == null) {
-			if (InternalPlatform.DEBUG_PLUGIN_PREFERENCES)
-				InternalPlatform.message("Product preference customization file: " + customizationValue + " not found for bundle: " + productID); //$NON-NLS-1$//$NON-NLS-2$
-		}
-
-		return loadProperties(url);
-	}
-
-	public Properties getProductTranslation() {
-		initValues();
-		URL transURL = null;
-
-		if (customizationValue != null)
-			transURL = FileLocator.find(customizationBundle, NL_DIR.append(customizationValue).removeFileExtension().addFileExtension(PROPERTIES_FILE_EXTENSION), null);
-
-		if (transURL == null && InternalPlatform.DEBUG_PLUGIN_PREFERENCES)
-			InternalPlatform.message("No preference translations found for product/file: " + customizationBundle.getSymbolicName() + '/' + customizationValue); //$NON-NLS-1$
-
-		return loadProperties(transURL);
-	}
-
-	private Properties loadProperties(URL url) {
-		Properties result = new Properties();
-		if (url == null)
-			return result;
-		InputStream input = null;
-		try {
-			input = url.openStream();
-			result.load(input);
-		} catch (IOException e) {
-			if (InternalPlatform.DEBUG_PLUGIN_PREFERENCES) {
-				InternalPlatform.message("Problem opening stream to preference customization file: " + url); //$NON-NLS-1$
-				e.printStackTrace();
-			}
-		} finally {
-			if (input != null)
-				try {
-					input.close();
-				} catch (IOException e) {
-					// ignore
-				}
-		}
-		return result;
-	}
-
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/AdapterFactoryProxy.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/AdapterFactoryProxy.java
deleted file mode 100644
index e506d1b..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/AdapterFactoryProxy.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import java.util.ArrayList;
-import org.eclipse.core.runtime.*;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.Bundle;
-
-/**
- * Instances of this class represent adapter factories that have been
- * contributed via the adapters extension point. The concrete factory is not
- * loaded until the factory's plugin is loaded, AND until the factory is
- * requested to supply an adapter.
- */
-class AdapterFactoryProxy implements IAdapterFactory, IAdapterFactoryExt {
-	private IConfigurationElement element;
-	/**
-	 * Store Id of the declaring extension. We might need it in case 
-	 * the owner goes away (in this case element becomes invalid).
-	 */
-	private String ownerId;
-	/**
-	 * The real factory. Null until the factory is loaded.
-	 */
-	private IAdapterFactory factory;
-	private boolean factoryLoaded = false;
-
-	/**
-	 * Creates a new factory proxy based on the given configuration element.
-	 * Returns the new proxy, or null if the element could not be created.
-	 */
-	public static AdapterFactoryProxy createProxy(IConfigurationElement element) {
-		AdapterFactoryProxy result = new AdapterFactoryProxy();
-		result.element = element;
-		result.ownerId = element.getDeclaringExtension().getUniqueIdentifier();
-		if ("factory".equals(element.getName())) //$NON-NLS-1$
-			return result;
-		result.logError();
-		return null;
-	}
-
-	String getAdaptableType() {
-		//cannot return null because it can cause startup failure
-		String result = element.getAttribute("adaptableType"); //$NON-NLS-1$
-		if (result != null)
-			return result;
-		logError();
-		return ""; //$NON-NLS-1$
-	}
-
-	public Object getAdapter(Object adaptableObject, Class adapterType) {
-		if (!factoryLoaded)
-			loadFactory(false);
-		return factory == null ? null : factory.getAdapter(adaptableObject, adapterType);
-	}
-
-	public Class[] getAdapterList() {
-		if (!factoryLoaded)
-			loadFactory(false);
-		return factory == null ? null : factory.getAdapterList();
-	}
-
-	public String[] getAdapterNames() {
-		IConfigurationElement[] children = element.getChildren();
-		ArrayList adapters = new ArrayList(children.length);
-		for (int i = 0; i < children.length; i++) {
-			//ignore unknown children for forward compatibility
-			if ("adapter".equals(children[i].getName())) { //$NON-NLS-1$
-				String type = children[i].getAttribute("type"); //$NON-NLS-1$
-				if (type != null)
-					adapters.add(type);
-			}
-		}
-		if (adapters.isEmpty())
-			logError();
-		return (String[]) adapters.toArray(new String[adapters.size()]);
-	}
-
-	IExtension getExtension() {
-		return element.getDeclaringExtension();
-	}
-
-	String getOwnerId() {
-		return ownerId;
-	}
-
-	/**
-	 * Loads the real adapter factory, but only if its associated plug-in is
-	 * already loaded. Returns the real factory if it was successfully loaded.
-	 * @param force if <code>true</code> the plugin providing the 
-	 * factory will be loaded if necessary, otherwise no plugin activations
-	 * will occur.
-	 */
-	public IAdapterFactory loadFactory(boolean force) {
-		synchronized (this) {
-			if (factory != null || factoryLoaded)
-				return factory;
-			String bundleId = element.getContributor().getName();
-			if (!force && Platform.getBundle(bundleId).getState() != Bundle.ACTIVE)
-				return null;
-			//set to true to prevent repeated attempts to load a broken factory
-			factoryLoaded = true;
-		}
-		try {
-			factory = (IAdapterFactory) element.createExecutableExtension("class"); //$NON-NLS-1$
-		} catch (CoreException e) {
-			InternalPlatform.getDefault().log(e.getStatus());
-		}
-		return factory;
-	}
-
-	/**
-	 * The factory extension was malformed. Log an appropriate exception
-	 */
-	private void logError() {
-		String msg = NLS.bind(Messages.adapters_badAdapterFactory, element.getContributor().getName());
-		InternalPlatform.getDefault().log(new Status(IStatus.ERROR, Platform.PI_RUNTIME, 1, msg, null));
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/AdapterManagerListener.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/AdapterManagerListener.java
deleted file mode 100644
index 36c773b..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/AdapterManagerListener.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import java.util.*;
-import org.eclipse.core.runtime.*;
-
-/**
- * Portions of the AdapterManager that deal with the Eclipse extension registry
- * were moved into this class.
- * 
- * @since org.eclipse.core.runtime 3.2
- */
-public final class AdapterManagerListener implements IRegistryChangeListener {
-
-	private AdapterManager theAdapterManager;
-
-	/**
-	 * Constructs a new adapter manager.
-	 */
-	public AdapterManagerListener() {
-		theAdapterManager = AdapterManager.getDefault();
-		registerFactoryProxies();
-		Platform.getExtensionRegistry().addRegistryChangeListener(this);
-	}
-
-	/**
-	 * Loads adapters registered with the adapters extension point from
-	 * the plug-in registry.  Note that the actual factory implementations
-	 * are loaded lazily as they are needed.
-	 */
-	private void registerFactoryProxies() {
-		IExtensionRegistry registry = Platform.getExtensionRegistry();
-		IExtensionPoint point = registry.getExtensionPoint(Platform.PI_RUNTIME, Platform.PT_ADAPTERS);
-		if (point == null)
-			return;
-		IExtension[] extensions = point.getExtensions();
-		for (int i = 0; i < extensions.length; i++)
-			registerExtension(extensions[i]);
-	}
-
-	private void registerExtension(IExtension extension) {
-		IConfigurationElement[] elements = extension.getConfigurationElements();
-		for (int j = 0; j < elements.length; j++) {
-			AdapterFactoryProxy proxy = AdapterFactoryProxy.createProxy(elements[j]);
-			if (proxy != null)
-				theAdapterManager.registerFactory(proxy, proxy.getAdaptableType());
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.IRegistryChangeListener#registryChanged(org.eclipse.core.runtime.IRegistryChangeEvent)
-	 */
-	public synchronized void registryChanged(IRegistryChangeEvent event) {
-		//find the set of changed adapter extensions
-		HashSet toRemove = null;
-		IExtensionDelta[] deltas = event.getExtensionDeltas();
-		String adapterId = Platform.PI_RUNTIME + '.' + Platform.PT_ADAPTERS;
-		boolean found = false;
-		for (int i = 0; i < deltas.length; i++) {
-			//we only care about extensions to the adapters extension point
-			if (!adapterId.equals(deltas[i].getExtensionPoint().getUniqueIdentifier()))
-				continue;
-			found = true;
-			if (deltas[i].getKind() == IExtensionDelta.ADDED)
-				registerExtension(deltas[i].getExtension());
-			else {
-				//create the hash set lazily
-				if (toRemove == null)
-					toRemove = new HashSet();
-				toRemove.add(deltas[i].getExtension().getUniqueIdentifier());
-			}
-		}
-		//need to discard cached state for the changed extensions
-		if (found)
-			theAdapterManager.flushLookup();
-		if (toRemove == null)
-			return;
-		//remove any factories belonging to extensions that are going away
-		for (Iterator it = theAdapterManager.getFactories().values().iterator(); it.hasNext();) {
-			for (Iterator it2 = ((List) it.next()).iterator(); it2.hasNext();) {
-				IAdapterFactory factory = (IAdapterFactory) it2.next();
-				if (factory instanceof AdapterFactoryProxy) {
-					String ext = ((AdapterFactoryProxy) factory).getOwnerId();
-					if (toRemove.contains(ext))
-						it2.remove();
-				}
-			}
-		}
-	}
-
-	/*
-	 * Shuts down the listener by removing the registry change listener. Should only be
-	 * invoked during platform shutdown.
-	 */
-	public synchronized void stop() {
-		Platform.getExtensionRegistry().removeRegistryChangeListener(this);
-	}
-
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/AuthorizationDatabase.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/AuthorizationDatabase.java
deleted file mode 100644
index 4884bec..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/AuthorizationDatabase.java
+++ /dev/null
@@ -1,369 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import java.io.*;
-import java.net.URL;
-import java.util.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * A database that remembers information, such as usernames and
- * passwords.  The information is stored in memory and can be saved
- * to disk in an encrypted format.  While the API is phrased in terms of
- * URLs, realms and authentication schemes, not all of these must have
- * significant values.  For example, if "realm" is not relevant to a
- * particular application, it can be left blank (though not
- * <code>null</code>).
- */
-public class AuthorizationDatabase {
-	/**
-	 * Version number for the format of the keyring file.
-	 */
-	private static final int KEYRING_FILE_VERSION = 1;
-	/**
-	 * A nested hashtable that stores authorization information. The
-	 * table maps server URLs to realms to authentication schemes to
-	 * authorization information.
-	 */
-	private Hashtable authorizationInfo = new Hashtable(5);
-
-	/**
-	 * A hashtable mapping resource URLs to realms.
-	 */
-	private Hashtable protectionSpace = new Hashtable(5);
-
-	private File file = null;
-	private String password = null;
-	private boolean needsSaving = true;
-
-	/**
-	 * Creates a new authorization database whose data cannot be saved to
-	 * disk.
-	 */
-	public AuthorizationDatabase() {
-		super();
-	}
-
-	/**
-	 * Creates a new authorization database, or opens an existing one, whose
-	 * data is, or can be, saved to a file with the given filename. A
-	 * password must be given to create a new database and an existing
-	 * database is opened by supplying the password that was given to create
-	 * it.
-	 *
-	 * @param filename the location of the database on disk. For example,
-	 *		"c:/temp/database"
-	 * @param password the password to access the database. For example,
-	 *		"secret"
-	 * @exception CoreException if there are problems creating the database.
-	 *		Reasons include:
-	 * <ul>
-	 * <li>The database could not be opened because the wrong password was given.
-	 * <li>The database could not be opened because the specified file is corrupt.
-	 * </ul>
-	 */
-	public AuthorizationDatabase(String filename, String password) throws CoreException {
-		Assert.isNotNull(filename);
-		Assert.isNotNull(password);
-		this.password = password;
-		file = new File(filename);
-		load();
-	}
-
-	/**
-	 * Adds the given authorization information to the database. The
-	 * information is relevant for the specified protection space and the
-	 * given authorization scheme. The protection space is defined by the
-	 * combination of the given server URL and realm. The authorization 
-	 * scheme determines what the authorization information contains and how 
-	 * it should be used. The authorization information is a <code>Map</code> 
-	 * of <code>String</code> to <code>String</code> and typically
-	 * contain information such as usernames and passwords.
-	 *
-	 * @param serverUrl the URL identifying the server for this authorization
-	 *		information. For example, "http://www.hostname.com/".
-	 * @param realm the subsection of the given server to which this
-	 *		authorization information applies.  For example,
-	 *		"realm1@hostname.com" or "" for no realm.
-	 * @param authScheme the scheme for which this authorization information
-	 *		applies. For example, "Basic" or "" for no authorization scheme
-	 * @param info a <code>Map</code> containing authorization information 
-	 *		such as usernames and passwords
-	 */
-	public void addAuthorizationInfo(URL serverUrl, String realm, String authScheme, Map info) {
-		Assert.isNotNull(serverUrl);
-		Assert.isNotNull(realm);
-		Assert.isNotNull(authScheme);
-		Assert.isNotNull(info);
-
-		String url = serverUrl.toString();
-		Hashtable realmToAuthScheme = (Hashtable) authorizationInfo.get(url);
-		if (realmToAuthScheme == null) {
-			realmToAuthScheme = new Hashtable(5);
-			authorizationInfo.put(url, realmToAuthScheme);
-		}
-
-		Hashtable authSchemeToInfo = (Hashtable) realmToAuthScheme.get(realm);
-		if (authSchemeToInfo == null) {
-			authSchemeToInfo = new Hashtable(5);
-			realmToAuthScheme.put(realm, authSchemeToInfo);
-		}
-
-		authSchemeToInfo.put(authScheme.toLowerCase(), info);
-		needsSaving = true;
-	}
-
-	/**
-	 * Adds the specified resource to the protection space specified by the
-	 * given realm. All resources at or deeper than the depth of the last
-	 * symbolic element in the path of the given resource URL are assumed to
-	 * be in the same protection space.
-	 *
-	 * @param resourceUrl the URL identifying the resources to be added to
-	 *		the specified protection space. For example,
-	 *		"http://www.hostname.com/folder/".
-	 * @param realm the name of the protection space. For example,
-	 *		"realm1@hostname.com"
-	 */
-	public void addProtectionSpace(URL resourceUrl, String realm) {
-		Assert.isNotNull(resourceUrl);
-		Assert.isNotNull(realm);
-
-		if (!resourceUrl.getFile().endsWith("/")) { //$NON-NLS-1$
-			resourceUrl = URLTool.getParent(resourceUrl);
-		}
-
-		String oldRealm = getProtectionSpace(resourceUrl);
-		if (oldRealm != null && oldRealm.equals(realm)) {
-			return;
-		}
-
-		String url1 = resourceUrl.toString();
-		Enumeration urls = protectionSpace.keys();
-		while (urls.hasMoreElements()) {
-			String url2 = (String) urls.nextElement();
-			if (url1.startsWith(url2) || url2.startsWith(url1)) {
-				protectionSpace.remove(url2);
-				break;
-			}
-		}
-
-		protectionSpace.put(url1, realm);
-		needsSaving = true;
-	}
-
-	/**
-	 * Removes the authorization information for the specified protection
-	 * space and given authorization scheme. The protection space is defined
-	 * by the given server URL and realm.
-	 *
-	 * @param serverUrl the URL identifying the server to remove the
-	 *		authorization information for. For example,
-	 *		"http://www.hostname.com/".
-	 * @param realm the subsection of the given server to remove the
-	 *		authorization information for. For example,
-	 *		"realm1@hostname.com" or "" for no realm.
-	 * @param authScheme the scheme for which the authorization information
-	 *		to remove applies. For example, "Basic" or "" for no
-	 *		authorization scheme.
-	 */
-	public void flushAuthorizationInfo(URL serverUrl, String realm, String authScheme) {
-		Hashtable realmToAuthScheme = (Hashtable) authorizationInfo.get(serverUrl.toString());
-
-		if (realmToAuthScheme == null) {
-			return;
-		}
-
-		Hashtable authSchemeToInfo = (Hashtable) realmToAuthScheme.get(realm);
-
-		if (authSchemeToInfo == null) {
-			return;
-		}
-
-		authSchemeToInfo.remove(authScheme.toLowerCase());
-
-		needsSaving = true;
-	}
-
-	/**
-	 * Returns the authorization information for the specified protection
-	 * space and given authorization scheme. The protection space is defined
-	 * by the given server URL and realm. Returns <code>null</code> if no
-	 * such information exists.
-	 *
-	 * @param serverUrl the URL identifying the server for the authorization
-	 *		information. For example, "http://www.hostname.com/".
-	 * @param realm the subsection of the given server to which the
-	 *		authorization information applies.  For example,
-	 *		"realm1@hostname.com" or "" for no realm.
-	 * @param authScheme the scheme for which the authorization information
-	 *		applies. For example, "Basic" or "" for no authorization scheme
-	 * @return the authorization information for the specified protection
-	 *		space and given authorization scheme, or <code>null</code> if no
-	 *		such information exists
-	 */
-	public Map getAuthorizationInfo(URL serverUrl, String realm, String authScheme) {
-		Hashtable realmToAuthScheme = (Hashtable) authorizationInfo.get(serverUrl.toString());
-		if (realmToAuthScheme == null) {
-			return null;
-		}
-
-		Hashtable authSchemeToInfo = (Hashtable) realmToAuthScheme.get(realm);
-		if (authSchemeToInfo == null) {
-			return null;
-		}
-
-		return (Map) authSchemeToInfo.get(authScheme.toLowerCase());
-	}
-
-	/**
-	 * Returns the protection space (realm) for the specified resource, or
-	 * <code>null</code> if the realm is unknown.
-	 *
-	 * @param resourceUrl the URL of the resource whose protection space is
-	 *		returned. For example, "http://www.hostname.com/folder/".
-	 * @return the protection space (realm) for the specified resource, or
-	 *		<code>null</code> if the realm is unknown
-	 */
-	public String getProtectionSpace(URL resourceUrl) {
-		while (resourceUrl != null) {
-			String realm = (String) protectionSpace.get(resourceUrl.toString());
-			if (realm != null) {
-				return realm;
-			}
-			resourceUrl = URLTool.getParent(resourceUrl);
-		}
-
-		return null;
-	}
-
-	private void load() throws CoreException {
-		if (file == null)
-			return;
-		if (!file.exists()) {
-			save();
-			return;
-		}
-		try {
-			InputStream input = new FileInputStream(file);
-			try {
-				load(input);
-			} finally {
-				input.close();
-			}
-		} catch (IOException e) {
-			throw new CoreException(new Status(IStatus.ERROR, Platform.PI_RUNTIME, Platform.FAILED_READ_METADATA, NLS.bind(Messages.meta_unableToReadAuthorization, file), e));
-		} catch (ClassNotFoundException e) {
-			throw new CoreException(new Status(IStatus.ERROR, Platform.PI_RUNTIME, Platform.FAILED_READ_METADATA, NLS.bind(Messages.meta_unableToReadAuthorization, file), e));
-		}
-	}
-
-	private void load(InputStream is) throws IOException, ClassNotFoundException, CoreException {
-		//try to read the file version number. Pre 2.0 versions had no number
-		int version = is.read();
-		if (version == KEYRING_FILE_VERSION) {
-			//read the authorization data
-			CipherInputStream cis = new CipherInputStream(is, password);
-			ObjectInputStream ois = new ObjectInputStream(cis);
-			try {
-				authorizationInfo = (Hashtable) ois.readObject();
-				protectionSpace = (Hashtable) ois.readObject();
-			} finally {
-				ois.close();
-			}
-		} else {
-			//the format has changed, just log a warning
-			InternalPlatform.getDefault().log(new Status(IStatus.WARNING, Platform.PI_RUNTIME, Platform.FAILED_READ_METADATA, Messages.meta_authFormatChanged, null));
-			//close the stream and save a new file in the correct format
-			try {
-				is.close();
-			} catch (IOException e) {
-				//ignore failure to close
-			}
-			needsSaving = true;
-			save();
-		}
-	}
-
-	/**
-	 * Saves the authorization database to disk.
-	 */
-	public void save() throws CoreException {
-		if (!needsSaving || file == null)
-			return;
-		try {
-			file.delete();
-			if ((!file.getParentFile().exists() && !file.getParentFile().mkdirs()) || !canWrite(file.getParentFile()))
-				throw new CoreException(new Status(IStatus.ERROR, Platform.PI_RUNTIME, Platform.FAILED_WRITE_METADATA, NLS.bind(Messages.meta_unableToWriteAuthorization, file), null));
-			file.createNewFile();
-			FileOutputStream out = new FileOutputStream(file);
-			try {
-				save(out);
-			} finally {
-				out.close();
-			}
-		} catch (IOException e) {
-			throw new CoreException(new Status(IStatus.ERROR, Platform.PI_RUNTIME, Platform.FAILED_WRITE_METADATA, NLS.bind(Messages.meta_unableToWriteAuthorization, file), e));
-		}
-		needsSaving = false;
-	}
-
-	private static boolean canWrite(File installDir) {
-		if (!installDir.canWrite())
-			return false;
-
-		if (!installDir.isDirectory())
-			return false;
-
-		File fileTest = null;
-		try {
-			fileTest = File.createTempFile("writtableArea", null, installDir); //$NON-NLS-1$
-		} catch (IOException e) {
-			//If an exception occured while trying to create the file, it means that it is not writtable
-			return false;
-		} finally {
-			if (fileTest != null)
-				fileTest.delete();
-		}
-		return true;
-	}
-
-	private void save(FileOutputStream os) throws IOException {
-		//write the version number
-		os.write(KEYRING_FILE_VERSION);
-
-		CipherOutputStream cos = new CipherOutputStream(os, password);
-		ObjectOutputStream oos = new ObjectOutputStream(cos);
-		//write the data
-		try {
-			oos.writeObject(authorizationInfo);
-			oos.writeObject(protectionSpace);
-			os.flush();
-			os.getFD().sync();
-		} finally {
-			oos.close();
-		}
-	}
-
-	/**
-	 * Sets the password to use for accessing this database.  If the database
-	 * is subsequently saved, this new password is used.
-	 */
-	public boolean setPassword(String oldValue, String newValue) {
-		if (!oldValue.equals(password))
-			return false;
-		password = newValue;
-		needsSaving = true;
-		return true;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/AuthorizationHandler.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/AuthorizationHandler.java
deleted file mode 100644
index d0bac9e..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/AuthorizationHandler.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import java.io.File;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.osgi.util.NLS;
-
-// This class factors out the management of the .keyring location
-public class AuthorizationHandler {
-	/* package */static final String F_KEYRING = ".keyring"; //$NON-NLS-1$
-
-	//Authorization related informations
-	private static AuthorizationDatabase keyring = null;
-	private static long keyringTimeStamp;
-	private static String keyringFile = null;
-	private static String password = ""; //$NON-NLS-1$
-
-	/**
-	 * Opens the password database (if any) initally provided to the platform at startup.
-	 */
-	private static void loadKeyring() throws CoreException {
-		if (keyring != null && new File(keyringFile).lastModified() == keyringTimeStamp)
-			return;
-		if (keyringFile == null) {
-			File file = new File(InternalPlatform.getDefault().getConfigurationLocation().getURL().getPath() + '/' + Platform.PI_RUNTIME);
-			file = new File(file, F_KEYRING);
-			keyringFile = file.getAbsolutePath();
-		}
-		try {
-			keyring = new AuthorizationDatabase(keyringFile, password);
-		} catch (CoreException e) {
-			InternalPlatform.getDefault().log(e.getStatus());
-		}
-		if (keyring == null) {
-			//try deleting the file and loading again - format may have changed
-			new java.io.File(keyringFile).delete();
-			keyring = new AuthorizationDatabase(keyringFile, password);
-			//don't bother logging a second failure and let it flows to the callers
-		}
-		keyringTimeStamp = new File(keyringFile).lastModified();
-	}
-
-	/**
-	 * @see org.eclipse.core.runtime.Platform
-	 */
-	public static void addAuthorizationInfo(URL serverUrl, String realm, String authScheme, Map info) throws CoreException {
-		loadKeyring();
-		keyring.addAuthorizationInfo(serverUrl, realm, authScheme, new HashMap(info));
-		keyring.save();
-	}
-
-	/**
-	 * @see org.eclipse.core.runtime.Platform
-	 */
-	public static void addProtectionSpace(URL resourceUrl, String realm) throws CoreException {
-		loadKeyring();
-		keyring.addProtectionSpace(resourceUrl, realm);
-		keyring.save();
-	}
-
-	/**
-	 * @see org.eclipse.core.runtime.Platform
-	 */
-	public static void flushAuthorizationInfo(URL serverUrl, String realm, String authScheme) throws CoreException {
-		loadKeyring();
-		keyring.flushAuthorizationInfo(serverUrl, realm, authScheme);
-		keyring.save();
-	}
-
-	/**
-	 * @see org.eclipse.core.runtime.Platform
-	 */
-	public static Map getAuthorizationInfo(URL serverUrl, String realm, String authScheme) {
-		Map info = null;
-		try {
-			loadKeyring();
-			info = keyring.getAuthorizationInfo(serverUrl, realm, authScheme);
-		} catch (CoreException e) {
-			// The error has already been logged in loadKeyring()
-		}
-		return info == null ? null : new HashMap(info);
-	}
-
-	/**
-	 * @see org.eclipse.core.runtime.Platform
-	 */
-	public static String getProtectionSpace(URL resourceUrl) {
-		try {
-			loadKeyring();
-		} catch (CoreException e) {
-			// The error has already been logged in loadKeyring()
-			return null;
-		}
-		return keyring.getProtectionSpace(resourceUrl);
-	}
-
-	public static void setKeyringFile(String file) {
-		if (keyringFile != null)
-			throw new IllegalStateException(NLS.bind(Messages.meta_keyringFileAlreadySpecified, keyringFile));
-		keyringFile = file;
-	}
-
-	public static void setPassword(String keyringPassword) {
-		password = keyringPassword;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/Cipher.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/Cipher.java
deleted file mode 100644
index 51eaa3c..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/Cipher.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import java.io.UnsupportedEncodingException;
-import java.security.MessageDigest;
-import java.util.Random;
-
-/**
- * <P>Encrypts or decrypts a sequence of bytes. The bytes are decrypted
- * by supplying the same password that was given when the bytes were
- * encrypted.
- * <P>Here is an example showing how to encrypt and then decrypt the
- * string "Hello, world!" using the password "music":
- * <pre>
- *     String password = "music";
- *     byte[] data = "Hello, world!".getBytes("UTF8");
- *
- *     // Encrypt
- *     Cipher cipher = new Cipher(ENCRYPT_MODE, password);
- *     byte[] encrypted = cipher.cipher(data);
- *
- *     // Decrypt
- *     cipher = new Cipher(DECRYPT_MODE, password);
- *     byte[] decrypted = cipher.cipher(encrypted);
- * </pre>
- */
-public class Cipher {
-	public static final int DECRYPT_MODE = -1;
-	public static final int ENCRYPT_MODE = 1;
-	private static final int RANDOM_SIZE = 16;
-
-	private int mode = 0;
-	private byte[] password = null;
-
-	//the following fields are used for generating a secure byte stream
-	//used by the decryption algorithm
-	private byte[] byteStream;
-	private int byteStreamOffset;
-	private MessageDigest digest;
-	private Random random;
-	private final byte[] toDigest;
-
-	/**
-	 * Initializes the cipher with the given mode and password. This method
-	 * must be called first (before any encryption of decryption takes
-	 * place) to specify whether the cipher should be in encrypt or decrypt
-	 * mode and to set the password.
-	 *
-	 * @param mode
-	 * @param passwordString
-	 */
-	public Cipher(int mode, String passwordString) {
-		this.mode = mode;
-		try {
-			this.password = passwordString.getBytes("UTF8"); //$NON-NLS-1$
-		} catch (UnsupportedEncodingException e) {
-			this.password = passwordString.getBytes();
-		}
-		toDigest = new byte[password.length + RANDOM_SIZE];
-	}
-
-	/**
-	 * Encrypts or decrypts (depending on which mode the cipher is in) the
-	 * given data and returns the result.
-	 *
-	 * @param data
-	 * @return     the result of encrypting or decrypting the given data
-	 */
-	public byte[] cipher(byte[] data) throws Exception {
-		return transform(data, 0, data.length, mode);
-	}
-
-	/**
-	 * Encrypts or decrypts (depending on which mode the cipher is in) the
-	 * given data and returns the result.
-	 *
-	 * @param data the byte array containg the given data
-	 * @param off  the index of the first byte in the given byte array
-	 *   to be transformed
-	 * @param len  the number of bytes to be transformed
-	 * @return the result of encrypting or decrypting the given data
-	 */
-	public byte[] cipher(byte[] data, int off, int len) throws Exception {
-		return transform(data, off, len, mode);
-	}
-
-	/**
-	 * Encrypts or decrypts (depending on which mode the cipher is in) the
-	 * given byte and returns the result.
-	 *
-	 * @param datum the given byte
-	 * @return      the result of encrypting or decrypting the given byte
-	 */
-	public byte cipher(byte datum) throws Exception {
-		byte[] data = {datum};
-		return cipher(data)[0];
-	}
-
-	/**
-	 * Generates a secure stream of bytes based on the input seed.
-	 * This routine works by combining the input seed with random bytes
-	 * generated by a random number generator, and then computing the 
-	 * SHA-1 hash of those bytes.
-	 */
-	private byte[] generateBytes() throws Exception {
-		if (digest == null) {
-			digest = MessageDigest.getInstance("SHA"); //$NON-NLS-1$
-			//also seed random number generator based on password
-			long seed = 0;
-			for (int i = 0; i < password.length; i++)
-				//this function is known to give good hash distribution for character data
-				seed = (seed * 37) + password[i];
-			random = new Random(seed);
-		}
-		//add random bytes to digest array
-		random.nextBytes(toDigest);
-
-		//overlay password onto digest array
-		System.arraycopy(password, 0, toDigest, 0, password.length);
-
-		//compute and return SHA-1 hash of digest array
-		return digest.digest(toDigest);
-	}
-
-	/**
-	 * Returns a stream of cryptographically secure bytes of the given length.
-	 * The result is deterministically based on the input seed (password).
-	 */
-	private byte[] nextRandom(int length) throws Exception {
-		byte[] nextRandom = new byte[length];
-		int nextRandomOffset = 0;
-		while (nextRandomOffset < length) {
-			if (byteStream == null || byteStreamOffset >= byteStream.length) {
-				byteStream = generateBytes();
-				byteStreamOffset = 0;
-			}
-			nextRandom[nextRandomOffset++] = byteStream[byteStreamOffset++];
-		}
-		return nextRandom;
-	}
-
-	private byte[] transform(byte[] data, int off, int len, int mod) throws Exception {
-		byte[] result = nextRandom(len);
-		for (int i = 0; i < len; ++i) {
-			result[i] = (byte) (data[i + off] + mod * result[i]);
-		}
-		return result;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/CipherInputStream.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/CipherInputStream.java
deleted file mode 100644
index 0bb17c7..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/CipherInputStream.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import java.io.*;
-
-/**
- * Decrypts a stream of data that was encrypted using the
- * <code>Cipher</code> or <code>CipherOutputStream</code>.
- *
- * @see Cipher
- * @see CipherOutputStream
- */
-public class CipherInputStream extends FilterInputStream {
-	private static final int SKIP_BUFFER_SIZE = 2048;
-	private Cipher cipher;
-
-	/**
-	 * Constructs a new <code>CipherInputStream</code> that decrypts the
-	 * data in the given <code>InputStream</code>.  The data can only be
-	 * decrypted if the given password is the same as that which was used
-	 * to encrypt it.
-	 *
-	 * @param is
-	 * @param password
-	 */
-	public CipherInputStream(InputStream is, String password) {
-		super(is);
-		cipher = new Cipher(Cipher.DECRYPT_MODE, password);
-	}
-
-	/**
-	 * @see InputStream#markSupported()
-	 */
-	public boolean markSupported() {
-		return false;
-	}
-
-	/**
-	 * @see InputStream#read()
-	 */
-	public int read() throws IOException {
-		int b = super.read();
-		if (b == -1)
-			return -1;
-		try {
-			return (cipher.cipher((byte) b)) & 0x00ff;
-		} catch (Exception e) {
-			throw new IOException(e.getMessage());
-		}
-	}
-
-	/**
-	 * @see InputStream#read(byte[], int, int)
-	 */
-	public int read(byte b[], int off, int len) throws IOException {
-		int bytesRead = in.read(b, off, len);
-		if (bytesRead == -1)
-			return -1;
-		try {
-			byte[] result = cipher.cipher(b, off, bytesRead);
-			for (int i = 0; i < result.length; ++i)
-				b[i + off] = result[i];
-			return bytesRead;
-		} catch (Exception e) {
-			throw new IOException(e.getMessage());
-		}
-	}
-
-	/**
-	 * @see InputStream#skip(long)
-	 */
-	public long skip(long n) throws IOException {
-		byte[] buffer = new byte[SKIP_BUFFER_SIZE];
-
-		int bytesRead = 0;
-		long bytesRemaining = n;
-
-		while (bytesRead != -1 && bytesRemaining > 0) {
-			bytesRead = read(buffer, 0, (int) Math.min(SKIP_BUFFER_SIZE, bytesRemaining));
-			if (bytesRead > 0) {
-				bytesRemaining -= bytesRead;
-			}
-		}
-
-		return n - bytesRemaining;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/CipherOutputStream.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/CipherOutputStream.java
deleted file mode 100644
index 600a560..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/CipherOutputStream.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import java.io.*;
-
-/**
- * Encrypts a stream of data that can be decrypted using the
- * <code>Cipher</code> or <code>CipherInputStream</code>.
- *
- * @see Cipher
- * @see CipherInputStream
- */
-public class CipherOutputStream extends FilterOutputStream {
-	private Cipher cipher;
-
-	/**
-	 * Constructs a new <code>CipherOutputStream</code> that encrypts the
-	 * data in the given <code>OutputStream</code>.  Once the data is
-	 * encrypted it can be decrypted by suppying the encrupted data and
-	 * given password to a <code>Cipher</code> or
-	 * <code>CipherInputStream</code>.
-	 *
-	 * @param os
-	 * @param password
-	 */
-	public CipherOutputStream(OutputStream os, String password) {
-		super(os);
-		cipher = new Cipher(Cipher.ENCRYPT_MODE, password);
-	}
-
-	/**
-	 * @see OutputStream#write(int)
-	 */
-	public void write(int b) throws IOException {
-		try {
-			out.write(cipher.cipher((byte) b));
-		} catch (Exception e) {
-			throw new IOException(e.getMessage());
-		}
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/CompatibilityHelper.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/CompatibilityHelper.java
deleted file mode 100644
index ae6c6ed..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/CompatibilityHelper.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import java.lang.reflect.Method;
-import org.eclipse.core.runtime.*;
-import org.osgi.framework.Bundle;
-
-/**
- * This class isolates calls to the backward compatibility layer.
- * It uses reflection so it can be loaded with success even in the absence of
- * the compatibility plugin.
- * 
- * @deprecated Marked as deprecated to suppress deprecation warnings.
- */
-public class CompatibilityHelper {
-	private static final String OPTION_DEBUG_COMPATIBILITY = Platform.PI_RUNTIME + "/compatibility/debug"; //$NON-NLS-1$
-	public static final boolean DEBUG = Boolean.TRUE.toString().equalsIgnoreCase(InternalPlatform.getDefault().getOption(OPTION_DEBUG_COMPATIBILITY));
-	public static final String PI_RUNTIME_COMPATIBILITY = "org.eclipse.core.runtime.compatibility"; //$NON-NLS-1$
-	private static Bundle compatibility = null;
-
-	public synchronized static void nullCompatibility() {
-		compatibility = null;
-	}
-	
-	public synchronized static Bundle initializeCompatibility() {
-		// if compatibility is stale (has been uninstalled or unresolved) 
-		// then we try to get a new resolved compatibility bundle
-		if (compatibility == null || (compatibility.getState() & (Bundle.INSTALLED | Bundle.UNINSTALLED | Bundle.STOPPING)) != 0)
-			compatibility = org.eclipse.core.internal.runtime.InternalPlatform.getDefault().getBundle(PI_RUNTIME_COMPATIBILITY);
-		return compatibility;
-	}
-
-	public static void setPlugin(IPluginDescriptor descriptor, Plugin plugin) {
-		//Here we use reflection so the runtime code can run without the compatibility plugin
-		if (initializeCompatibility() == null)
-			throw new IllegalStateException();
-
-		try {
-			Method setPlugin = descriptor.getClass().getMethod("setPlugin", new Class[] {Plugin.class}); //$NON-NLS-1$
-			setPlugin.invoke(descriptor, new Object[] {plugin});
-		} catch (Exception e) {
-			//Ignore the exceptions
-		}
-	}
-
-	public synchronized static IPluginDescriptor getPluginDescriptor(String pluginId) {
-		//Here we use reflection so the runtime code can run without the compatibility
-		initializeCompatibility();
-		if (compatibility == null)
-			throw new IllegalStateException();
-
-		Class oldInternalPlatform = null;
-		try {
-			oldInternalPlatform = compatibility.loadClass("org.eclipse.core.internal.plugins.InternalPlatform"); //$NON-NLS-1$
-			Method getPluginDescriptor = oldInternalPlatform.getMethod("getPluginDescriptor", new Class[] {String.class}); //$NON-NLS-1$
-			return (IPluginDescriptor) getPluginDescriptor.invoke(oldInternalPlatform, new Object[] {pluginId});
-		} catch (Exception e) {
-			if (DEBUG) {
-				String msg = "Error running compatibility code"; //$NON-NLS-1$
-				IStatus error = new Status(IStatus.ERROR, Platform.PI_RUNTIME, 1, msg, e);
-				InternalPlatform.getDefault().log(error);
-			}
-			//Ignore the exceptions, return null			
-		}
-		return null;
-	}
-
-	public synchronized static void setActive(IPluginDescriptor descriptor) {
-		initializeCompatibility();
-		if (compatibility == null)
-			throw new IllegalStateException();
-
-		try {
-			Method setPlugin = descriptor.getClass().getMethod("setActive", null); //$NON-NLS-1$
-			setPlugin.invoke(descriptor, null);
-		} catch (Exception e) {
-			//Ignore the exceptions
-		}
-	}
-
-	public synchronized static boolean hasPluginObject(IPluginDescriptor descriptor) {
-		initializeCompatibility();
-		if (compatibility == null)
-			throw new IllegalStateException();
-
-		Boolean result = Boolean.FALSE;
-		try {
-			Method setPlugin = descriptor.getClass().getMethod("hasPluginObject", null); //$NON-NLS-1$
-			result = (Boolean) setPlugin.invoke(descriptor, null);
-		} catch (Exception e) {
-			//Ignore the exceptions			
-		}
-		return result.booleanValue();
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/InternalPlatform.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/InternalPlatform.java
deleted file mode 100644
index 792234d..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/InternalPlatform.java
+++ /dev/null
@@ -1,1115 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Julian Chen - fix for bug #92572, jclRM
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import java.io.*;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.*;
-import org.eclipse.core.internal.boot.PlatformURLBaseConnection;
-import org.eclipse.core.internal.preferences.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.content.IContentTypeManager;
-import org.eclipse.core.runtime.preferences.IPreferencesService;
-import org.eclipse.core.runtime.preferences.IProductPreferencesService;
-import org.eclipse.osgi.framework.log.FrameworkLog;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.service.datalocation.Location;
-import org.eclipse.osgi.service.debug.DebugOptions;
-import org.eclipse.osgi.service.environment.EnvironmentInfo;
-import org.eclipse.osgi.service.resolver.PlatformAdmin;
-import org.eclipse.osgi.service.urlconversion.URLConverter;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-import org.osgi.service.packageadmin.PackageAdmin;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * Bootstrap class for the platform. It is responsible for setting up the
- * platform class loader and passing control to the actual application class
- */
-public final class InternalPlatform {
-
-	// Command line args as seen by the Eclipse runtime. allArgs does NOT
-	// include args consumed by the underlying framework (e.g., OSGi)
-	private static String[] allArgs = new String[0];
-	private static String[] appArgs = new String[0];
-	private static final String APPLICATION = "-application"; //$NON-NLS-1$	
-
-	private static final String[] ARCH_LIST = {Platform.ARCH_PA_RISC, //
-			Platform.ARCH_PPC, //
-			Platform.ARCH_SPARC, //
-			Platform.ARCH_X86, //
-			Platform.ARCH_AMD64, // 
-			Platform.ARCH_IA64, //
-			Platform.ARCH_IA64_32};
-	private static final String BOOT = "-boot"; //$NON-NLS-1$
-	private static final String CLASSLOADER_PROPERTIES = "-classloaderProperties"; //$NON-NLS-1$	
-
-	// debug support:  set in loadOptions()
-	public static boolean DEBUG = false;
-	public static boolean DEBUG_PLUGIN_PREFERENCES = false;
-
-	private static Runnable splashHandler = null;
-	private static final String FEATURE = "-feature"; //$NON-NLS-1$
-	private static final String FIRST_USE = "-firstUse"; //$NON-NLS-1$
-	private static String[] frameworkArgs = new String[0];
-
-	private static boolean initialized;
-	private static final String KEY_DOUBLE_PREFIX = "%%"; //$NON-NLS-1$
-
-	private static final String KEY_PREFIX = "%"; //$NON-NLS-1$
-	private static final String KEYRING = "-keyring"; //$NON-NLS-1$
-	private static String keyringFile;
-
-	//XXX This is not synchronized
-	private static Map logs = new HashMap(5);
-	private static final String NEW_UPDATES = "-newUpdates"; //$NON-NLS-1$
-
-	// obsolete command line args
-	private static final String NO_PACKAGE_PREFIXES = "-noPackagePrefixes"; //$NON-NLS-1$
-	private static final String NO_UPDATE = "-noUpdate"; //$NON-NLS-1$
-
-	private static final String[] OS_LIST = {Platform.OS_AIX, Platform.OS_HPUX, Platform.OS_LINUX, Platform.OS_MACOSX, Platform.OS_QNX, Platform.OS_SOLARIS, Platform.OS_WIN32};
-	private static String password = ""; //$NON-NLS-1$
-	private static final String PASSWORD = "-password"; //$NON-NLS-1$
-	private static PlatformLogWriter platformLog = null;
-
-	private static final String PLUGIN_PATH = ".plugin-path"; //$NON-NLS-1$
-	private static final String PLUGINS = "-plugins"; //$NON-NLS-1$
-
-	// command line options
-	private static final String PRODUCT = "-product"; //$NON-NLS-1$	
-	public static final String PROP_ADAPTOR = "osgi.adaptor"; //$NON-NLS-1$
-	public static final String PROP_APPLICATION = "eclipse.application"; //$NON-NLS-1$
-	public static final String PROP_ARCH = "osgi.arch"; //$NON-NLS-1$
-	public static final String PROP_CONFIG_AREA = "osgi.configuration.area"; //$NON-NLS-1$
-	public static final String PROP_CONSOLE = "osgi.console"; //$NON-NLS-1$
-	public static final String PROP_CONSOLE_CLASS = "osgi.consoleClass"; //$NON-NLS-1$
-	public static final String PROP_CONSOLE_LOG = "eclipse.consoleLog"; //$NON-NLS-1$
-	public static final String PROP_DEBUG = "osgi.debug"; //$NON-NLS-1$
-	public static final String PROP_DEV = "osgi.dev"; //$NON-NLS-1$
-	public static final String PROP_EXITCODE = "eclipse.exitcode"; //$NON-NLS-1$
-
-	// OSGI system properties.  Copied from EclipseStarter
-	public static final String PROP_INSTALL_AREA = "osgi.install.area"; //$NON-NLS-1$
-	public static final String PROP_INSTANCE_AREA = "osgi.instance.area"; //$NON-NLS-1$
-	public static final String PROP_MANIFEST_CACHE = "osgi.manifest.cache"; //$NON-NLS-1$
-	public static final String PROP_NL = "osgi.nl"; //$NON-NLS-1$
-	public static final String PROP_OS = "osgi.os"; //$NON-NLS-1$
-
-	// Eclipse System Properties
-	public static final String PROP_PRODUCT = "eclipse.product"; //$NON-NLS-1$
-	public static final String PROP_SYSPATH = "osgi.syspath"; //$NON-NLS-1$
-	public static final String PROP_USER_AREA = "osgi.user.area"; //$NON-NLS-1$
-	public static final String PROP_WS = "osgi.ws"; //$NON-NLS-1$
-	private static final InternalPlatform singleton = new InternalPlatform();
-
-	private static final String UPDATE = "-update"; //$NON-NLS-1$
-	private static final String[] WS_LIST = {Platform.WS_CARBON, Platform.WS_GTK, Platform.WS_MOTIF, Platform.WS_PHOTON, Platform.WS_WIN32};
-	private Path cachedInstanceLocation; // Cache the path of the instance location
-	private ServiceTracker configurationLocation = null;
-	private BundleContext context;
-
-	private Map groupProviders = new IdentityHashMap(3);
-	private ServiceTracker installLocation = null;
-	private ServiceTracker instanceLocation = null;
-	private boolean missingProductReported = false;
-	private IProduct product;
-	private AdapterManagerListener adapterManagerListener = null;
-	private String applicationId;
-	private Properties commandLineProperties = new Properties();
-
-	private Plugin runtimeInstance; // Keep track of the plugin object for runtime in case the backward compatibility is run.
-
-	private ServiceRegistration legacyPreferencesService = null;
-	private ServiceRegistration customPreferencesService = null;
-	private ServiceRegistration platformURLConverterService = null;
-
-	private ServiceTracker environmentTracker = null;
-	private ServiceTracker logTracker = null;
-	private ServiceTracker bundleTracker = null;
-	private ServiceTracker debugTracker = null;
-	private ServiceTracker contentTracker = null;
-	private ServiceTracker preferencesTracker = null;
-	private ServiceTracker productTracker = null;
-	private ServiceTracker userLocation = null;
-	private ServiceTracker groupProviderTracker = null;
-
-	public static InternalPlatform getDefault() {
-		return singleton;
-	}
-
-	/**
-	 * Private constructor to block instance creation.
-	 */
-	private InternalPlatform() {
-		super();
-	}
-
-	public void addAuthorizationInfo(URL serverUrl, String realm, String authScheme, Map info) throws CoreException {
-		AuthorizationHandler.addAuthorizationInfo(serverUrl, realm, authScheme, info);
-	}
-
-	/**
-	 * @see Platform#addLogListener(ILogListener)
-	 */
-	public void addLogListener(ILogListener listener) {
-		assertInitialized();
-		RuntimeLog.addLogListener(listener);
-	}
-
-	public void addProtectionSpace(URL resourceUrl, String realm) throws CoreException {
-		AuthorizationHandler.addProtectionSpace(resourceUrl, realm);
-	}
-
-	private void assertInitialized() {
-		//avoid the Policy.bind if assertion is true
-		if (!initialized)
-			Assert.isTrue(false, Messages.meta_appNotInit);
-	}
-
-	/**
-	 * @see Platform#endSplash()
-	 */
-	public void endSplash() {
-		final Runnable handler = splashHandler;
-		if (handler == null)
-			return;
-		//clear reference to handler to avoid calling it again and to avoid object leak
-		splashHandler = null;
-		SafeRunner.run(new ISafeRunnable() {
-			public void handleException(Throwable e) {
-				// just continue ... the exception has already been logged by
-				// handleException(ISafeRunnable)
-			}
-
-			public void run() throws Exception {
-				handler.run();
-			}
-		});
-	}
-
-	public void flushAuthorizationInfo(URL serverUrl, String realm, String authScheme) throws CoreException {
-		AuthorizationHandler.flushAuthorizationInfo(serverUrl, realm, authScheme);
-	}
-
-	/**
-	 * @see Platform#getAdapterManager()
-	 */
-	public IAdapterManager getAdapterManager() {
-		assertInitialized();
-		return AdapterManager.getDefault();
-	}
-
-	public String[] getApplicationArgs() {
-		return appArgs;
-	}
-
-	public String getApplicationId() {
-		if (applicationId != null)
-			return applicationId;
-
-		// try commandLineProperties
-		applicationId = commandLineProperties.getProperty(PROP_APPLICATION);
-		if (applicationId != null)
-			return applicationId;
-
-		// try bundleContext properties
-		applicationId = context.getProperty(PROP_APPLICATION);
-		if (applicationId != null)
-			return applicationId;
-
-		//Derive the application from the product information
-		IProduct eclipseProduct = getProduct();
-		if (eclipseProduct != null) {
-			applicationId = eclipseProduct.getApplication();
-		}
-		return applicationId;
-	}
-
-	public Map getAuthorizationInfo(URL serverUrl, String realm, String authScheme) {
-		return AuthorizationHandler.getAuthorizationInfo(serverUrl, realm, authScheme);
-	}
-
-	public boolean getBooleanOption(String option, boolean defaultValue) {
-		String value = getOption(option);
-		if (value == null)
-			return defaultValue;
-		return value.equalsIgnoreCase("true"); //$NON-NLS-1$
-	}
-
-	public Bundle getBundle(String symbolicName) {
-		PackageAdmin packageAdmin = getBundleAdmin();
-		if (packageAdmin == null)
-			return null;
-		Bundle[] bundles = packageAdmin.getBundles(symbolicName, null);
-		if (bundles == null)
-			return null;
-		//Return the first bundle that is not installed or uninstalled
-		for (int i = 0; i < bundles.length; i++) {
-			if ((bundles[i].getState() & (Bundle.INSTALLED | Bundle.UNINSTALLED)) == 0) {
-				return bundles[i];
-			}
-		}
-		return null;
-	}
-
-	public BundleContext getBundleContext() {
-		return context;
-	}
-
-	/**
-	 * Returns the bundle id of the bundle that contains the provided object, or
-	 * <code>null</code> if the bundle could not be determined.
-	 */
-	public String getBundleId(Object object) {
-		if (object == null)
-			return null;
-		PackageAdmin packageAdmin = getBundleAdmin();
-		if (packageAdmin == null)
-			return null;
-		Bundle source = packageAdmin.getBundle(object.getClass());
-		if (source != null && source.getSymbolicName() != null)
-			return source.getSymbolicName();
-		return null;
-	}
-
-	public IBundleGroupProvider[] getBundleGroupProviders() {
-		if (groupProviderTracker == null) {
-			// acquire the service and get the list of services
-			Filter filter = null;
-			try {
-				filter = getBundleContext().createFilter("(objectClass=" + IBundleGroupProvider.class.getName() + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-			} catch (InvalidSyntaxException e) {
-				// ignore this, it should never happen
-			}
-			groupProviderTracker = new ServiceTracker(getBundleContext(), filter, null);
-			groupProviderTracker.open();
-		}
-		Object[] objectArray = groupProviderTracker.getServices();
-		if (objectArray == null) // getServices may return null; but we can not.
-			return new IBundleGroupProvider[0];
-		IBundleGroupProvider[] result = new IBundleGroupProvider[objectArray.length];
-		System.arraycopy(objectArray, 0, result, 0, objectArray.length);
-		return result;
-	}
-
-	public void registerBundleGroupProvider(IBundleGroupProvider provider) {
-		// get the bundle context and register the provider as a service
-		ServiceRegistration registration = getBundleContext().registerService(IBundleGroupProvider.class.getName(), provider, null);
-		// store the service registration (map provider -> registration)
-		synchronized (groupProviders) {
-			groupProviders.put(provider, registration);
-		}
-	}
-
-	public void unregisterBundleGroupProvider(IBundleGroupProvider provider) {
-		// get the service reference (map provider -> reference)
-		ServiceRegistration registration;
-		synchronized (groupProviders) {
-			registration = (ServiceRegistration) groupProviders.remove(provider);
-		}
-		if (registration == null)
-			return;
-		// unregister the provider
-		registration.unregister();
-	}
-
-	public Bundle[] getBundles(String symbolicName, String version) {
-		PackageAdmin packageAdmin = getBundleAdmin();
-		if (packageAdmin == null)
-			return null;
-		Bundle[] bundles = packageAdmin.getBundles(symbolicName, version);
-		if (bundles == null)
-			return null;
-		// optimize for common case; length==1
-		if (bundles.length == 1 && (bundles[0].getState() & (Bundle.INSTALLED | Bundle.UNINSTALLED)) == 0)
-			return bundles;
-		//Remove all the bundes that are installed or uninstalled
-		Bundle[] selectedBundles = new Bundle[bundles.length];
-		int added = 0;
-		for (int i = 0; i < bundles.length; i++) {
-			if ((bundles[i].getState() & (Bundle.INSTALLED | Bundle.UNINSTALLED)) == 0) {
-				selectedBundles[added++] = bundles[i];
-			}
-		}
-		if (added == 0)
-			return null;
-
-		//return an array of the correct size
-		Bundle[] results = new Bundle[added];
-		System.arraycopy(selectedBundles, 0, results, 0, added);
-		return results;
-	}
-
-	public String[] getCommandLineArgs() {
-		return allArgs;
-	}
-
-	public Location getConfigurationLocation() {
-		assertInitialized();
-		return (Location) configurationLocation.getService();
-	}
-
-	/**
-	 * Lazy initialise ContentTypeManager - it can only be used after the registry is up and running
-	 */
-	public IContentTypeManager getContentTypeManager() {
-		if (contentTracker == null) {
-			contentTracker = new ServiceTracker(context, IContentTypeManager.class.getName(), null);
-			contentTracker.open();
-		}
-		return (IContentTypeManager) contentTracker.getService();
-	}
-
-	public EnvironmentInfo getEnvironmentInfoService() {
-		if (environmentTracker == null) {
-			environmentTracker = new ServiceTracker(context, EnvironmentInfo.class.getName(), null);
-			environmentTracker.open();
-		}
-		return (EnvironmentInfo) environmentTracker.getService();
-	}
-
-	public Bundle[] getFragments(Bundle bundle) {
-		PackageAdmin packageAdmin = getBundleAdmin();
-		if (packageAdmin == null)
-			return null;
-		return packageAdmin.getFragments(bundle);
-	}
-
-	public FrameworkLog getFrameworkLog() {
-		if (logTracker == null) {
-			logTracker = new ServiceTracker(context, FrameworkLog.class.getName(), null);
-			logTracker.open();
-		}
-		return (FrameworkLog) logTracker.getService();
-	}
-
-	public Bundle[] getHosts(Bundle bundle) {
-		PackageAdmin packageAdmin = getBundleAdmin();
-		if (packageAdmin == null)
-			return null;
-		return packageAdmin.getHosts(bundle);
-	}
-
-	public Location getInstallLocation() {
-		assertInitialized();
-		return (Location) installLocation.getService();
-	}
-
-	public URL getInstallURL() {
-		Location location = getInstallLocation();
-		// it is pretty much impossible for the install location to be null.  If it is, the
-		// system is in a bad way so throw and exception and get the heck outta here.
-		if (location == null)
-			throw new IllegalStateException("The installation location must not be null"); //$NON-NLS-1$
-		return location.getURL();
-	}
-
-	public Location getInstanceLocation() {
-		assertInitialized();
-		return (Location) instanceLocation.getService();
-	}
-
-	public int getIntegerOption(String option, int defaultValue) {
-		String value = getOption(option);
-		if (value == null)
-			return defaultValue;
-		try {
-			return Integer.parseInt(value);
-		} catch (NumberFormatException e) {
-			return defaultValue;
-		}
-	}
-
-	/**
-	 * @see Platform#getLocation()
-	 */
-	public IPath getLocation() throws IllegalStateException {
-		if (cachedInstanceLocation == null) {
-			Location location = getInstanceLocation();
-			if (location == null)
-				return null;
-			//	This makes the assumption that the instance location is a file: URL
-			File file = new File(location.getURL().getFile());
-			cachedInstanceLocation = new Path(file.toString());
-		}
-		return cachedInstanceLocation;
-	}
-
-	/**
-	 * Returns a log for the given plugin. Creates a new one if needed.
-	 */
-	public ILog getLog(Bundle bundle) {
-		ILog result = (ILog) logs.get(bundle);
-		if (result != null)
-			return result;
-		result = new Log(bundle);
-		logs.put(bundle, result);
-		return result;
-	}
-
-	public IPath getLogFileLocation() {
-		return getMetaArea().getLogLocation();
-	}
-
-	/**
-	 * Returns the object which defines the location and organization
-	 * of the platform's meta area.
-	 */
-	public DataArea getMetaArea() {
-		// TODO: derecate?
-		return MetaDataKeeper.getMetaArea();
-	}
-
-	public String getNL() {
-		return getBundleContext().getProperty(PROP_NL);
-	}
-
-	/**
-	 * @see Platform
-	 */
-	public String getOption(String option) {
-		DebugOptions options = getDebugOptions();
-		if (options != null)
-			return options.getOption(option);
-		return null;
-	}
-
-	public String getOS() {
-		return getBundleContext().getProperty(PROP_OS);
-	}
-
-	public String getOSArch() {
-		return getBundleContext().getProperty(PROP_ARCH);
-	}
-
-	public PlatformAdmin getPlatformAdmin() {
-		ServiceReference platformAdminReference = context.getServiceReference(PlatformAdmin.class.getName());
-		if (platformAdminReference == null)
-			return null;
-		return (PlatformAdmin) context.getService(platformAdminReference);
-	}
-
-	//TODO I guess it is now time to get rid of that
-	/*
-	 * This method is retained for R1.0 compatibility because it is defined as API.
-	 * It's function matches the API description (returns <code>null</code> when
-	 * argument URL is <code>null</code> or cannot be read).
-	 */
-	public URL[] getPluginPath(URL pluginPathLocation /*R1.0 compatibility*/
-	) {
-		InputStream input = null;
-		// first try and see if the given plugin path location exists.
-		if (pluginPathLocation == null)
-			return null;
-		try {
-			input = pluginPathLocation.openStream();
-		} catch (IOException e) {
-			//fall through
-		}
-
-		// if the given path was null or did not exist, look for a plugin path
-		// definition in the install location.
-		if (input == null)
-			try {
-				URL url = new URL(PlatformURLBaseConnection.PLATFORM_URL_STRING + PLUGIN_PATH);
-				input = url.openStream();
-			} catch (MalformedURLException e) {
-				//fall through
-			} catch (IOException e) {
-				//fall through
-			}
-
-		// nothing was found at the supplied location or in the install location
-		if (input == null)
-			return null;
-		// if we found a plugin path definition somewhere so read it and close the location.
-		URL[] result = null;
-		try {
-			try {
-				result = readPluginPath(input);
-			} finally {
-				input.close();
-			}
-		} catch (IOException e) {
-			//let it return null on failure to read
-		}
-		return result;
-	}
-
-	/**
-	 * 
-	 */
-	public IPreferencesService getPreferencesService() {
-		if (preferencesTracker == null) {
-			preferencesTracker = new ServiceTracker(context, IPreferencesService.class.getName(), null);
-			preferencesTracker.open();
-		}
-		return (IPreferencesService) preferencesTracker.getService();
-	}
-
-	/**
-	 * Look for the companion preference translation file for a group
-	 * of preferences.  This method will attempt to find a companion 
-	 * ".properties" file first.  This companion file can be in an
-	 * nl-specific directory for this plugin or any of its fragments or 
-	 * it can be in the root of this plugin or the root of any of the
-	 * plugin's fragments. This properties file can be used to translate
-	 * preference values.
-	 * 
-	 * TODO fix these comments
-	 * @param uniqueIdentifier the descriptor of the plugin
-	 *   who has the preferences
-	 * @param basePrefFileName the base name of the preference file
-	 *   This base will be used to construct the name of the 
-	 *   companion translation file.
-	 *   Example: If basePrefFileName is "plugin_customization",
-	 *   the preferences are in "plugin_customization.ini" and
-	 *   the translations are found in
-	 *   "plugin_customization.properties".
-	 * @return the properties file
-	 * 
-	 * @since 2.0
-	 */
-	public Properties getPreferenceTranslator(String uniqueIdentifier, String basePrefFileName) {
-		return new Properties();
-	}
-
-	public IProduct getProduct() {
-		if (product != null)
-			return product;
-
-		// try commandLineProperties
-		String productId = commandLineProperties.getProperty(PROP_PRODUCT);
-
-		if (productId == null) {
-			// try bundleContext properties
-			productId = context.getProperty(InternalPlatform.PROP_PRODUCT);
-			if (productId == null)
-				return null;
-		}
-		IConfigurationElement[] entries = InternalPlatform.getDefault().getRegistry().getConfigurationElementsFor(Platform.PI_RUNTIME, Platform.PT_PRODUCT, productId);
-		if (entries.length > 0) {
-			// There should only be one product with the given id so just take the first element
-			product = new Product(productId, entries[0]);
-			return product;
-		}
-		IConfigurationElement[] elements = InternalPlatform.getDefault().getRegistry().getConfigurationElementsFor(Platform.PI_RUNTIME, Platform.PT_PRODUCT);
-		List logEntries = null;
-		for (int i = 0; i < elements.length; i++) {
-			IConfigurationElement element = elements[i];
-			if (element.getName().equalsIgnoreCase("provider")) { //$NON-NLS-1$
-				try {
-					IProductProvider provider = (IProductProvider) element.createExecutableExtension("run"); //$NON-NLS-1$
-					IProduct[] products = provider.getProducts();
-					for (int j = 0; j < products.length; j++) {
-						IProduct provided = products[j];
-						if (provided.getId().equalsIgnoreCase(productId)) {
-							product = provided;
-							return product;
-						}
-					}
-				} catch (CoreException e) {
-					if (logEntries == null)
-						logEntries = new ArrayList(3);
-					logEntries.add(new FrameworkLogEntry(Platform.PI_RUNTIME, NLS.bind(Messages.provider_invalid, element.getParent().toString()), 0, e, null));
-				}
-			}
-		}
-		if (logEntries != null)
-			InternalPlatform.getDefault().getFrameworkLog().log(new FrameworkLogEntry(Platform.PI_RUNTIME, Messages.provider_invalid_general, 0, null, (FrameworkLogEntry[]) logEntries.toArray()));
-
-		if (!missingProductReported) {
-			InternalPlatform.getDefault().getFrameworkLog().log(new FrameworkLogEntry(Platform.PI_RUNTIME, NLS.bind(Messages.product_notFound, productId), 0, null, null));
-			missingProductReported = true;
-		}
-		return null;
-	}
-
-	public String getProtectionSpace(URL resourceUrl) {
-		return AuthorizationHandler.getProtectionSpace(resourceUrl);
-	}
-
-	public IExtensionRegistry getRegistry() {
-		return RegistryFactory.getRegistry(); 
-	}
-
-	public ResourceBundle getResourceBundle(Bundle bundle) {
-		return ResourceTranslator.getResourceBundle(bundle);
-	}
-
-	public String getResourceString(Bundle bundle, String value) {
-		return ResourceTranslator.getResourceString(bundle, value);
-	}
-
-	public String getResourceString(Bundle bundle, String value, ResourceBundle resourceBundle) {
-		return ResourceTranslator.getResourceString(bundle, value, resourceBundle);
-	}
-
-	public Plugin getRuntimeInstance() {
-		return runtimeInstance;
-	}
-
-	private Runnable getSplashHandler() {
-		ServiceReference[] ref;
-		try {
-			ref = context.getServiceReferences(Runnable.class.getName(), null);
-		} catch (InvalidSyntaxException e) {
-			return null;
-		}
-		// assumes the endInitializationHandler is available as a service
-		// see EclipseStarter.publishSplashScreen
-		for (int i = 0; i < ref.length; i++) {
-			String name = (String) ref[i].getProperty("name"); //$NON-NLS-1$
-			if (name != null && name.equals("splashscreen")) { //$NON-NLS-1$
-				Runnable result = (Runnable) context.getService(ref[i]);
-				context.ungetService(ref[i]);
-				return result;
-			}
-		}
-		return null;
-	}
-
-	public IPath getStateLocation(Bundle bundle) {
-		return getStateLocation(bundle, true);
-	}
-
-	public IPath getStateLocation(Bundle bundle, boolean create) throws IllegalStateException {
-		assertInitialized();
-		IPath result = getMetaArea().getStateLocation(bundle);
-		if (create)
-			result.toFile().mkdirs();
-		return result;
-	}
-
-	public long getStateTimeStamp() {
-		PlatformAdmin admin = getPlatformAdmin();
-		return admin == null ? -1 : admin.getState(false).getTimeStamp();
-	}
-
-	public Location getUserLocation() {
-		assertInitialized();
-		return (Location) userLocation.getService();
-	}
-
-	public String getWS() {
-		return getBundleContext().getProperty(PROP_WS);
-	}
-
-	/**
-	 * @return whether platform log writer has already been registered
-	 */
-	public boolean hasLogWriter() {
-		return platformLog != null && RuntimeLog.contains(platformLog);
-	}
-
-	private void initializeAuthorizationHandler() {
-		AuthorizationHandler.setKeyringFile(keyringFile);
-		AuthorizationHandler.setPassword(password);
-	}
-
-	/*
-	 * Finds and loads the options file 
-	 */
-	void initializeDebugFlags() {
-		// load runtime options
-		DEBUG = getBooleanOption(Platform.PI_RUNTIME + "/debug", false); //$NON-NLS-1$
-		if (DEBUG) {
-			DEBUG_PLUGIN_PREFERENCES = getBooleanOption(Platform.PI_RUNTIME + "/preferences/plugin", false); //$NON-NLS-1$
-		}
-	}
-
-	private void initializeLocationTrackers() {
-		Filter filter = null;
-		try {
-			filter = context.createFilter(Location.CONFIGURATION_FILTER);
-		} catch (InvalidSyntaxException e) {
-			// ignore this.  It should never happen as we have tested the above format.
-		}
-		configurationLocation = new ServiceTracker(context, filter, null);
-		configurationLocation.open();
-
-		try {
-			filter = context.createFilter(Location.USER_FILTER);
-		} catch (InvalidSyntaxException e) {
-			// ignore this.  It should never happen as we have tested the above format.
-		}
-		userLocation = new ServiceTracker(context, filter, null);
-		userLocation.open();
-
-		try {
-			filter = context.createFilter(Location.INSTANCE_FILTER);
-		} catch (InvalidSyntaxException e) {
-			// ignore this.  It should never happen as we have tested the above format.
-		}
-		instanceLocation = new ServiceTracker(context, filter, null);
-		instanceLocation.open();
-
-		try {
-			filter = context.createFilter(Location.INSTALL_FILTER);
-		} catch (InvalidSyntaxException e) {
-			// ignore this.  It should never happen as we have tested the above format.
-		}
-		installLocation = new ServiceTracker(context, filter, null);
-		installLocation.open();
-	}
-
-	public boolean isFragment(Bundle bundle) {
-		PackageAdmin packageAdmin = getBundleAdmin();
-		if (packageAdmin == null)
-			return false;
-		return (packageAdmin.getBundleType(bundle) & PackageAdmin.BUNDLE_TYPE_FRAGMENT) > 0;
-	}
-
-	public boolean isRunning() {
-		try {
-			return initialized && context.getBundle().getState() == Bundle.ACTIVE;
-		} catch (IllegalStateException e) {
-			return false;
-		}
-	}
-
-	/**
-	 * Returns a list of known system architectures.
-	 * 
-	 * @return the list of system architectures known to the system
-	 */
-	public String[] knownOSArchValues() {
-		return ARCH_LIST;
-	}
-
-	/**
-	 * Returns a list of known operating system names.
-	 * 
-	 * @return the list of operating systems known to the system
-	 */
-	public String[] knownOSValues() {
-		return OS_LIST;
-	}
-
-	/**
-	 * Returns a list of known windowing system names.
-	 * 
-	 * @return the list of window systems known to the system
-	 */
-	public String[] knownWSValues() {
-		return WS_LIST;
-	}
-
-	/**
-	 * Notifies all listeners of the platform log.  This includes the console log, if 
-	 * used, and the platform log file.  All Plugin log messages get funnelled
-	 * through here as well.
-	 */
-	public void log(final IStatus status) {
-		// TODO: derecate?
-		RuntimeLog.log(status);
-	}
-
-	private String[] processCommandLine(String[] args) {
-		if (args == null)
-			return args;
-		allArgs = args;
-		if (args.length == 0)
-			return args;
-
-		int[] configArgs = new int[args.length];
-		//need to initialize the first element to something that could not be an index.
-		configArgs[0] = -1;
-		int configArgIndex = 0;
-		for (int i = 0; i < args.length; i++) {
-			boolean found = false;
-			// check for args without parameters (i.e., a flag arg)
-
-			// consume obsolete args
-			if (args[i].equalsIgnoreCase(CLASSLOADER_PROPERTIES))
-				found = true; // ignored
-			if (args[i].equalsIgnoreCase(NO_PACKAGE_PREFIXES))
-				found = true; // ignored
-			if (args[i].equalsIgnoreCase(PLUGINS))
-				found = true; // ignored
-			if (args[i].equalsIgnoreCase(FIRST_USE))
-				found = true; // ignored
-			if (args[i].equalsIgnoreCase(NO_UPDATE))
-				found = true; // ignored
-			if (args[i].equalsIgnoreCase(NEW_UPDATES))
-				found = true; // ignored
-			if (args[i].equalsIgnoreCase(UPDATE))
-				found = true; // ignored
-
-			// done checking for args.  Remember where an arg was found 
-			if (found) {
-				configArgs[configArgIndex++] = i;
-				continue;
-			}
-			// check for args with parameters
-			if (i == args.length - 1 || args[i + 1].startsWith("-")) //$NON-NLS-1$
-				continue;
-			String arg = args[++i];
-
-			// look for the keyring file
-			if (args[i - 1].equalsIgnoreCase(KEYRING)) {
-				keyringFile = arg;
-				found = true;
-			}
-
-			// look for the user password.  
-			if (args[i - 1].equalsIgnoreCase(PASSWORD)) {
-				password = arg;
-				found = true;
-			}
-
-			// look for the product to run
-			// treat -feature as a synonym for -product for compatibility.
-			if (args[i - 1].equalsIgnoreCase(PRODUCT) || args[i - 1].equalsIgnoreCase(FEATURE)) {
-				// use the long way to set the property to compile against eeminimum
-				commandLineProperties.setProperty(PROP_PRODUCT, arg);
-				found = true;
-			}
-
-			// look for the application to run.  
-			if (args[i - 1].equalsIgnoreCase(APPLICATION)) {
-				// use the long way to set the property to compile against eeminimum
-				commandLineProperties.setProperty(PROP_APPLICATION, arg);
-				found = true;
-			}
-
-			// consume obsolete args for compatibilty
-			if (args[i - 1].equalsIgnoreCase(CLASSLOADER_PROPERTIES))
-				found = true; // ignore
-			if (args[i - 1].equalsIgnoreCase(BOOT))
-				found = true; // ignore
-
-			// done checking for args.  Remember where an arg was found 
-			if (found) {
-				configArgs[configArgIndex++] = i - 1;
-				configArgs[configArgIndex++] = i;
-			}
-		}
-
-		// remove all the arguments consumed by this argument parsing
-		if (configArgIndex == 0) {
-			appArgs = args;
-			return args;
-		}
-		appArgs = new String[args.length - configArgIndex];
-		frameworkArgs = new String[configArgIndex];
-		configArgIndex = 0;
-		int j = 0;
-		int k = 0;
-		for (int i = 0; i < args.length; i++) {
-			if (i == configArgs[configArgIndex]) {
-				frameworkArgs[k++] = args[i];
-				configArgIndex++;
-			} else
-				appArgs[j++] = args[i];
-		}
-		return appArgs;
-	}
-
-	private URL[] readPluginPath(InputStream input) {
-		Properties ini = new Properties();
-		try {
-			ini.load(input);
-		} catch (IOException e) {
-			return null;
-		}
-		Vector result = new Vector(5);
-		for (Enumeration groups = ini.propertyNames(); groups.hasMoreElements();) {
-			String group = (String) groups.nextElement();
-			for (StringTokenizer entries = new StringTokenizer(ini.getProperty(group), ";"); entries.hasMoreElements();) { //$NON-NLS-1$
-				String entry = (String) entries.nextElement();
-				if (!entry.equals("")) //$NON-NLS-1$
-					try {
-						result.addElement(new URL(entry));
-					} catch (MalformedURLException e) {
-						//intentionally ignore bad URLs
-						System.err.println("Ignoring plugin: " + entry); //$NON-NLS-1$
-					}
-			}
-		}
-		return (URL[]) result.toArray(new URL[result.size()]);
-	}
-
-	/**
-	 * @see Platform#removeLogListener(ILogListener)
-	 */
-	public void removeLogListener(ILogListener listener) {
-		assertInitialized();
-		RuntimeLog.removeLogListener(listener);
-	}
-
-	public void setOption(String option, String value) {
-		DebugOptions options = getDebugOptions();
-		if (options != null)
-			options.setOption(option, value);
-	}
-
-	//Those two methods are only used to register runtime once compatibility has been started.
-	public void setRuntimeInstance(Plugin runtime) {
-		runtimeInstance = runtime;
-	}
-
-	/**
-	 * Internal method for starting up the platform.  The platform is not started with any location
-	 * and should not try to access the instance data area.
-	 * 
-	 * Note: the content type manager must be initialized only after the registry has been created
-	 */
-	public void start(BundleContext runtimeContext) {
-		this.context = runtimeContext;
-		initializeLocationTrackers();
-		splashHandler = getSplashHandler();
-		processCommandLine(getEnvironmentInfoService().getNonFrameworkArgs());
-		initializeDebugFlags();
-		initialized = true;
-		getMetaArea();
-		initializeAuthorizationHandler();
-		platformLog = new PlatformLogWriter(getFrameworkLog());
-		addLogListener(platformLog);
-		adapterManagerListener = new AdapterManagerListener(); // after extension registry
-		startServices();
-	}
-
-	/**
-	 * Shutdown runtime pieces in this order:
-	 * Content[auto shutdown] -> Preferences[auto shutdown] -> Registry -> Jobs
-	 * The "auto" shutdown takes place before this code is executed
-	 */
-	public void stop(BundleContext bundleContext) {
-		assertInitialized();
-		stopServices(); // should be done after preferences shutdown
-		if (adapterManagerListener != null)
-			adapterManagerListener.stop(); // before extension registry
-		RuntimeLog.removeLogListener(platformLog); // effectively turns the platform logging off
-		initialized = false;
-		closeOSGITrackers();
-		context = null;
-	}
-
-	/**
-	 * Takes a preference value and a related resource bundle and
-	 * returns the translated version of this value (if one exists).
-	 * 
-	 * TODO: fix these comments
-	 * @param value the preference value for potential translation
-	 * @param props the properties containing the translated values
-	 * 
-	 * @since 2.0
-	 */
-	public String translatePreference(String value, Properties props) {
-		value = value.trim();
-		if (props == null || value.startsWith(KEY_DOUBLE_PREFIX))
-			return value;
-		if (value.startsWith(KEY_PREFIX)) {
-
-			int ix = value.indexOf(" "); //$NON-NLS-1$
-			String key = ix == -1 ? value : value.substring(0, ix);
-			String dflt = ix == -1 ? value : value.substring(ix + 1);
-			return props.getProperty(key.substring(1), dflt);
-		}
-		return value;
-	}
-
-	private void startServices() {
-		customPreferencesService = getBundleContext().registerService(IProductPreferencesService.class.getName(), new ProductPreferencesService(), new Hashtable());
-		legacyPreferencesService = getBundleContext().registerService(ILegacyPreferences.class.getName(), new InitLegacyPreferences(), new Hashtable());
-
-		Dictionary urlProperties = new Hashtable();
-		urlProperties.put("protocol", "platform"); //$NON-NLS-1$ //$NON-NLS-2$
-		platformURLConverterService = context.registerService(URLConverter.class.getName(), new PlatformURLConverter(), urlProperties);
-	}
-
-	private void stopServices() {
-		if (legacyPreferencesService != null) {
-			legacyPreferencesService.unregister();
-			legacyPreferencesService = null;
-		}
-		if (customPreferencesService != null) {
-			customPreferencesService.unregister();
-			customPreferencesService = null;
-		}
-		if (platformURLConverterService != null) {
-			platformURLConverterService.unregister();
-			platformURLConverterService = null;
-		}
-	}
-
-	private PackageAdmin getBundleAdmin() {
-		if (bundleTracker == null) {
-			bundleTracker = new ServiceTracker(context, PackageAdmin.class.getName(), null);
-			bundleTracker.open();
-		}
-		return (PackageAdmin) bundleTracker.getService();
-	}
-
-	private DebugOptions getDebugOptions() {
-		if (debugTracker == null) {
-			if (context == null)
-				return null;
-			debugTracker = new ServiceTracker(context, DebugOptions.class.getName(), null);
-			debugTracker.open();
-		}
-		return (DebugOptions) debugTracker.getService();
-	}
-
-	private void closeOSGITrackers() {
-		if (productTracker != null) {
-			productTracker.close();
-			productTracker = null;
-		}
-		if (preferencesTracker != null) {
-			preferencesTracker.close();
-			preferencesTracker = null;
-		}
-		if (contentTracker != null) {
-			contentTracker.close();
-			contentTracker = null;
-		}
-		if (debugTracker != null) {
-			debugTracker.close();
-			debugTracker = null;
-		}
-		if (bundleTracker != null) {
-			bundleTracker.close();
-			bundleTracker = null;
-		}
-		if (logTracker != null) {
-			logTracker.close();
-			logTracker = null;
-		}
-		if (groupProviderTracker != null) {
-			groupProviderTracker.close();
-			groupProviderTracker = null;
-		}
-		if (environmentTracker != null) {
-			environmentTracker.close();
-			environmentTracker = null;
-		}
-	}
-
-	/**
-	 * Print a debug message to the console. 
-	 * Pre-pend the message with the current date and the name of the current thread.
-	 */
-	public static void message(String message) {
-		StringBuffer buffer = new StringBuffer();
-		buffer.append(new Date(System.currentTimeMillis()));
-		buffer.append(" - ["); //$NON-NLS-1$
-		buffer.append(Thread.currentThread().getName());
-		buffer.append("] "); //$NON-NLS-1$
-		buffer.append(message);
-		System.out.println(buffer.toString());
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/Log.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/Log.java
deleted file mode 100644
index c804679..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/Log.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import java.util.HashSet;
-import java.util.Set;
-import org.eclipse.core.runtime.*;
-import org.osgi.framework.Bundle;
-
-/**
- * 
- */
-public class Log implements ILog {
-	Bundle bundle;
-	Set logListeners = new HashSet(5);
-
-	public Log(Bundle plugin) {
-		this.bundle = plugin;
-	}
-
-	/**
-	 * Adds the given log listener to this log.  Subsequently the log listener will
-	 * receive notification of all log events passing through this log.
-	 *
-	 * @see Platform#addLogListener(ILogListener)
-	 */
-	public void addLogListener(ILogListener listener) {
-		synchronized (logListeners) {
-			logListeners.add(listener);
-		}
-	}
-
-	/**
-	 * Returns the plug-in with which this log is associated.
-	 */
-	public Bundle getBundle() {
-		return bundle;
-	}
-
-	/**
-	 * Logs the given status.  The status is distributed to the log listeners
-	 * installed on this log and then to the log listeners installed on the platform.
-	 *
-	 * @see Plugin#getLog()
-	 */
-	public void log(final IStatus status) {
-		// Log to the platform log first in case a listener throws an error.
-		InternalPlatform.getDefault().log(status);
-		// create array to avoid concurrent access
-		ILogListener[] listeners;
-		synchronized (logListeners) {
-			listeners = (ILogListener[]) logListeners.toArray(new ILogListener[logListeners.size()]);
-		}
-		for (int i = 0; i < listeners.length; i++) {
-			final ILogListener listener = listeners[i];
-			ISafeRunnable code = new ISafeRunnable() {
-				public void run() throws Exception {
-					listener.logging(status, bundle.getSymbolicName());
-				}
-
-				public void handleException(Throwable e) {
-					//Ignore
-				}
-			};
-			SafeRunner.run(code);
-		}
-	}
-
-	/**
-	 * Removes the given log listener to this log.  Subsequently the log listener will
-	 * no longer receive notification of log events passing through this log.
-	 *
-	 * @see Platform#removeLogListener(ILogListener)
-	 */
-	public void removeLogListener(ILogListener listener) {
-		synchronized (logListeners) {
-			logListeners.remove(listener);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/Messages.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/Messages.java
deleted file mode 100644
index e777254..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/Messages.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2005 IBM Corporation and others. All rights reserved.   This
- * program and the accompanying materials are made available under the terms of
- * the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: 
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import org.eclipse.osgi.util.NLS;
-
-// Runtime plugin message catalog
-public class Messages extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.core.internal.runtime.messages"; //$NON-NLS-1$
-
-	// Adapter manager
-	public static String adapters_badAdapterFactory;
-
-	// application
-	public static String application_invalidExtension;
-	public static String application_noIdFound;
-	public static String application_notFound;
-	public static String application_returned;
-
-	// line separator platforms
-	public static String line_separator_platform_mac_os_9;
-	public static String line_separator_platform_unix;
-	public static String line_separator_platform_windows;
-
-	// metadata
-	public static String meta_appNotInit;
-	public static String meta_authFormatChanged;
-	public static String meta_exceptionParsingLog;
-	public static String meta_keyringFileAlreadySpecified;
-
-	// Extension Registry
-	public static String meta_unableToReadAuthorization;
-	public static String meta_unableToWriteAuthorization;
-
-	// parsing/resolve
-	public static String plugin_deactivatedLoad;
-
-	// plugins
-	public static String plugin_shutdownProblems;
-	public static String plugin_startupProblems;
-
-	// Preferences
-	public static String preferences_saveProblems;
-
-	// Product
-	public static String product_notFound;
-	public static String provider_invalid;
-	public static String provider_invalid_general;
-
-	// URL
-	public static String url_badVariant;
-	public static String url_createConnection;
-	public static String url_invalidURL;
-	public static String url_noaccess;
-	public static String url_noOutput;
-	public static String url_resolveFragment;
-	public static String url_resolvePlugin;
-
-	// Compatibility - parsing/resolve
-	public static String parse_badPrereqOnFrag;
-	public static String parse_duplicateFragment;
-	public static String parse_duplicateLib;
-	public static String parse_internalStack;
-	public static String parse_unknownElement;
-	public static String parse_unknownTopElement;
-	public static String parse_unknownAttribute;
-	public static String parse_error;
-	public static String parse_errorProcessing;
-	public static String parse_errorNameLineColumn;
-	public static String parse_validExport;
-	public static String parse_validMatch;
-	public static String parse_unknownLibraryType;
-	public static String parse_nullFragmentIdentifier;
-	public static String parse_nullPluginIdentifier;
-	public static String parse_duplicatePlugin;
-	public static String parse_unknownEntry;
-	public static String parse_missingPluginId;
-	public static String parse_missingPluginName;
-	public static String parse_missingFPName;
-	public static String parse_missingFPVersion;
-	public static String parse_missingPluginVersion;
-	public static String parse_fragmentMissingAttr;
-	public static String parse_pluginMissingAttr;
-	public static String parse_pluginMissingIdName;
-	public static String parse_fragmentMissingIdName;
-	public static String parse_missingFragmentPd;
-	public static String parse_extPointDisabled;
-	public static String parse_extPointUnknown;
-	public static String parse_unsatisfiedOptPrereq;
-	public static String parse_unsatisfiedPrereq;
-	public static String parse_prereqDisabled;
-	public static String parse_prereqLoop;
-	public static String parse_prereqOptLoop;
-
-	// Compatibility - plugins
-	public static String plugin_notPluginClass;
-	public static String plugin_unableToResolve;
-	public static String plugin_pluginDisabled;
-	public static String plugin_instantiateClassError;
-	public static String plugin_loadClassError;
-
-	static {
-		// load message values from bundle file
-		reloadMessages();
-	}
-
-	public static void reloadMessages() {
-		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PerformanceStatsProcessor.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PerformanceStatsProcessor.java
deleted file mode 100644
index 3d0c1ea..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PerformanceStatsProcessor.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.PerformanceStats.PerformanceListener;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.osgi.framework.log.FrameworkLog;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-
-/**
- * Processes, records, and performs notification of performance events
- * that occur in the system.
- */
-public class PerformanceStatsProcessor extends Job {
-	private static final PerformanceStatsProcessor instance = new PerformanceStatsProcessor();
-
-	private static final long SCHEDULE_DELAY = 2000;
-
-	/**
-	 * Events that have occurred but have not yet been broadcast.
-	 */
-	private final ArrayList changes = new ArrayList();
-
-	/**
-	 * Event failures that have occurred but have not yet been broadcast.
-	 * Maps (PerformanceStats -> Long).
-	 */
-	private final HashMap failures = new HashMap();
-
-	/**
-	 * Event listeners.
-	 */
-	private final org.eclipse.core.runtime.ListenerList listeners = new org.eclipse.core.runtime.ListenerList();
-
-	private PlatformLogWriter log;
-
-	/*
-	 * @see PerformanceStats#addListener
-	 */
-	public static void addListener(PerformanceListener listener) {
-		instance.listeners.add(listener);
-	}
-
-	/**
-	 * Records the fact that an event occurred.
-	 * 
-	 * @param stats The event that occurred
-	 */
-	public static void changed(PerformanceStats stats) {
-		synchronized (instance) {
-			instance.changes.add(stats);
-		}
-		instance.schedule(SCHEDULE_DELAY);
-	}
-
-	/**
-	 * Records the fact that an event failed.
-	 * 
-	 * @param stats The event that occurred
-	 * @param pluginId The id of the plugin that declared the blame object, or
-	 * <code>null</code>
-	 * @param elapsed The elapsed time for this failure
-	 */
-	public static void failed(PerformanceStats stats, String pluginId, long elapsed) {
-		synchronized (instance) {
-			instance.failures.put(stats, new Long(elapsed));
-		}
-		instance.schedule(SCHEDULE_DELAY);
-		instance.logFailure(stats, pluginId, elapsed);
-	}
-
-	/*
-	 * @see PerformanceStats#printStats(PrintWriter)
-	 */
-	public static void printStats(PrintWriter out) {
-		/* gather totals */
-		long totalTime = 0;
-		int totalCount = 0;
-		PerformanceStats[] allStats = PerformanceStats.getAllStats();
-		for (int i = 0; i < allStats.length; i++) {
-			PerformanceStats stats = allStats[i];
-			totalTime += stats.getRunningTime();
-			totalCount += stats.getRunCount();
-		}
-		//dump stats
-		out.println("---------------------------------------------------------------"); //$NON-NLS-1$
-		for (int i = 0; i < allStats.length; i++) {
-			PerformanceStats stats = allStats[i];
-			out.print("Event: "); //$NON-NLS-1$
-			out.print(stats.getEvent());
-			out.print(" Blame: "); //$NON-NLS-1$
-			out.print(stats.getBlameString());
-			if (stats.getContext() != null) {
-				out.print(" Context: "); //$NON-NLS-1$
-				out.print(stats.getContext());
-			}
-			out.println();
-
-			int runCount = stats.getRunCount();
-			if (runCount > 0) {
-				out.print("Run count: "); //$NON-NLS-1$
-				out.print(Integer.toString(runCount));
-				out.print(" ("); //$NON-NLS-1$
-				out.print(Integer.toString((int) (runCount * 100.0 / totalCount)));
-				out.println(" % of total)"); //$NON-NLS-1$
-			}
-
-			long runTime = stats.getRunningTime();
-			if (runTime > 0) {
-				out.print("Duration (ms): "); //$NON-NLS-1$
-				out.print(Long.toString(runTime));
-				out.print(" ("); //$NON-NLS-1$
-				out.print(Integer.toString((int) (runTime * 100.0 / totalTime)));
-				out.println(" % of total)"); //$NON-NLS-1$
-			}
-			out.println(""); //$NON-NLS-1$
-		}
-	}
-
-	/*
-	 * @see PerformanceStats#removeListener
-	 */
-	public static void removeListener(PerformanceListener listener) {
-		instance.listeners.remove(listener);
-	}
-
-	/**
-	 * Private constructor to enforce singleton usage.
-	 */
-	private PerformanceStatsProcessor() {
-		super("Performance Stats"); //$NON-NLS-1$
-		setSystem(true);
-		setPriority(DECORATE);
-		BundleContext context = PlatformActivator.getContext();
-		String filter = '(' + FrameworkLog.SERVICE_PERFORMANCE + '=' + Boolean.TRUE.toString() + ')';
-		ServiceReference[] references;
-		FrameworkLog perfLog = null;
-		try {
-			references = context.getServiceReferences(FrameworkLog.class.getName(), filter);
-			if (references != null && references.length > 0) {
-				//just take the first matching service
-				perfLog = (FrameworkLog) context.getService(references[0]);
-				//make sure correct location is set
-				IPath logLocation = Platform.getLogFileLocation();
-				logLocation = logLocation.removeLastSegments(1).append("performance.log"); //$NON-NLS-1$
-				perfLog.setFile(logLocation.toFile(), false);
-			}
-		} catch (Exception e) {
-			IStatus error = new Status(IStatus.ERROR, Platform.PI_RUNTIME, 1, "Error loading performance log", e); //$NON-NLS-1$
-			InternalPlatform.getDefault().log(error);
-		}
-		//use the platform log if we couldn't create the performance log
-		if (perfLog == null)
-			perfLog = InternalPlatform.getDefault().getFrameworkLog();
-		log = new PlatformLogWriter(perfLog);
-	}
-
-	/**
-	 * Logs performance event failures to the platform's performance log
-	 */
-	private void logFailure(PerformanceStats stats, String pluginId, long elapsed) {
-		//may have failed to get the performance log service
-		if (log == null)
-			return;
-		if (pluginId == null)
-			pluginId = Platform.PI_RUNTIME;
-		String msg = "Performance failure: " + stats.getEvent() + " blame: " + stats.getBlameString() + " context: " + stats.getContext() + " duration: " + elapsed; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-		log.logging(new Status(IStatus.WARNING, pluginId, 1, msg, new RuntimeException()), pluginId);
-	}
-
-	/*
-	 * @see Job#run(IProgressMonitor)
-	 */
-	protected IStatus run(IProgressMonitor monitor) {
-		PerformanceStats[] events;
-		PerformanceStats[] failedEvents;
-		Long[] failedTimes;
-		synchronized (this) {
-			events = (PerformanceStats[]) changes.toArray(new PerformanceStats[changes.size()]);
-			changes.clear();
-			failedEvents = (PerformanceStats[]) failures.keySet().toArray(new PerformanceStats[failures.size()]);
-			failedTimes = (Long[]) failures.values().toArray(new Long[failures.size()]);
-			failures.clear();
-		}
-
-		//notify performance listeners
-		Object[] toNotify = listeners.getListeners();
-		for (int i = 0; i < toNotify.length; i++) {
-			final PerformanceStats.PerformanceListener listener = ((PerformanceStats.PerformanceListener) toNotify[i]);
-			if (events.length > 0)
-				listener.eventsOccurred(events);
-			for (int j = 0; j < failedEvents.length; j++)
-				listener.eventFailed(failedEvents[j], failedTimes[j].longValue());
-		}
-		schedule(SCHEDULE_DELAY);
-		return Status.OK_STATUS;
-	}
-
-	/*
-	 * @see Job#shouldRun()
-	 */
-	public boolean shouldRun() {
-		return !changes.isEmpty() || !failures.isEmpty();
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformActivator.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformActivator.java
deleted file mode 100644
index 1f773ff..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformActivator.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Julian Chen - fix for bug #92572, jclRM
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import java.util.Hashtable;
-import org.eclipse.core.internal.boot.PlatformURLBaseConnection;
-import org.eclipse.core.internal.boot.PlatformURLHandler;
-import org.eclipse.core.runtime.*;
-import org.eclipse.osgi.service.runnable.ParameterizedRunnable;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-import org.osgi.service.url.URLConstants;
-import org.osgi.service.url.URLStreamHandlerService;
-
-/**
- * Activator for the Eclipse runtime.
- */
-public class PlatformActivator extends Plugin implements BundleActivator {
-	private static final String PROP_ECLIPSE_EXITCODE = "eclipse.exitcode"; //$NON-NLS-1$
-	private static final String PROP_ECLIPSE_APPLICATION = "eclipse.application"; //$NON-NLS-1$
-
-	private static BundleContext context;
-	private ServiceRegistration entryLocatorRegistration;
-
-	public static BundleContext getContext() {
-		return context;
-	}
-
-	public void start(BundleContext runtimeContext) throws Exception {
-		PlatformActivator.context = runtimeContext;
-		InternalPlatform.getDefault().start(runtimeContext);
-		installPlatformURLSupport();
-		registerApplicationService();
-		InternalPlatform.getDefault().setRuntimeInstance(this);
-		super.start(runtimeContext);
-	}
-
-	/**
-	 * Register the platform URL support as a service to the URLHandler service
-	 */
-	private void installPlatformURLSupport() {
-		PlatformURLPluginConnection.startup();
-		PlatformURLFragmentConnection.startup();
-		PlatformURLMetaConnection.startup();
-		PlatformURLConfigConnection.startup();
-
-		PlatformURLBaseConnection.startup(InternalPlatform.getDefault().getInstallURL());
-
-		Hashtable properties = new Hashtable(1);
-		properties.put(URLConstants.URL_HANDLER_PROTOCOL, new String[] {PlatformURLHandler.PROTOCOL});
-		context.registerService(URLStreamHandlerService.class.getName(), new PlatformURLHandler(), properties);
-	}
-
-	public void stop(BundleContext runtimeContext) {
-		// unregister the EntryLocator to prevent the Framework from calling it
-		unregisterEntryLocator();
-		// Stop the platform orderly.		
-		InternalPlatform.getDefault().stop(runtimeContext);
-		InternalPlatform.getDefault().setRuntimeInstance(null);
-	}
-
-	private void registerApplicationService() {
-		ParameterizedRunnable work = new ParameterizedRunnable() {
-			public Object run(Object arg) throws Exception {
-				IPlatformRunnable application = null;
-				String applicationId = InternalPlatform.getDefault().getApplicationId();
-				if (applicationId == null)
-					throw new RuntimeException(Messages.application_noIdFound);
-				IExtensionRegistry registry = InternalPlatform.getDefault().getRegistry();
-				IExtension applicationExtension = registry.getExtension(Platform.PI_RUNTIME, Platform.PT_APPLICATIONS, applicationId);
-				if (applicationExtension == null) {
-					IExtension[] availableApps = registry.getExtensionPoint(Platform.PI_RUNTIME + '.' + Platform.PT_APPLICATIONS).getExtensions();
-					String availableAppsString = "<NONE>"; //$NON-NLS-1$
-					if (availableApps.length != 0) {
-						availableAppsString = availableApps[0].getUniqueIdentifier();
-						for (int i = 1; i < availableApps.length; i++) {
-							availableAppsString = availableAppsString + ", " + availableApps[i].getUniqueIdentifier(); //$NON-NLS-1$
-						}
-					}
-					throw new RuntimeException(NLS.bind(Messages.application_notFound, applicationId, availableAppsString));
-				}
-				IConfigurationElement[] configs = applicationExtension.getConfigurationElements();
-				if (configs.length == 0)
-					throw new RuntimeException(NLS.bind(Messages.application_invalidExtension, applicationId));
-				IConfigurationElement config = configs[0];
-				application = (IPlatformRunnable) config.createExecutableExtension("run"); //$NON-NLS-1$
-				// if the given arg is null the pass in the left over command line args.
-				if (arg == null)
-					arg = InternalPlatform.getDefault().getApplicationArgs();
-				Object result = application.run(arg);
-				int exitCode = result instanceof Integer ? ((Integer) result).intValue() : 0;
-				// use the long way to set the property to compile against eeminimum
-				System.getProperties().setProperty(PROP_ECLIPSE_EXITCODE, Integer.toString(exitCode));
-				if (InternalPlatform.DEBUG)
-					System.out.println(NLS.bind(Messages.application_returned, (new String[] {applicationId, result == null ? "null" : result.toString()}))); //$NON-NLS-1$
-				return result;
-			}
-		};
-		Hashtable properties = new Hashtable(1);
-		properties.put(PROP_ECLIPSE_APPLICATION, "default"); //$NON-NLS-1$ 
-		context.registerService(ParameterizedRunnable.class.getName(), work, properties);
-	}
-
-	private void unregisterEntryLocator() {
-		if (entryLocatorRegistration != null) {
-			entryLocatorRegistration.unregister();
-			entryLocatorRegistration = null;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformLogWriter.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformLogWriter.java
deleted file mode 100644
index 7f65458..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformLogWriter.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import java.util.ArrayList;
-import org.eclipse.core.runtime.*;
-import org.eclipse.osgi.framework.log.FrameworkLog;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-
-/**
- * A log writer that writes log entries.  
- * See PlatformLogReader for reading logs back into memory.
- * <p>
- * Note that this class just provides a bridge from the old ILog interface
- * to the OSGi FrameworkLog interface.
- */
-public class PlatformLogWriter implements ILogListener {
-	private final FrameworkLog frameworkLog;
-
-	public PlatformLogWriter(FrameworkLog frameworkLog) {
-		this.frameworkLog = frameworkLog;
-	}
-
-	/**
-	 * @see ILogListener#logging(IStatus, String)
-	 */
-	public synchronized void logging(IStatus status, String plugin) {
-		frameworkLog.log(getLog(status));
-	}
-
-	protected FrameworkLogEntry getLog(IStatus status) {
-		Throwable t = status.getException();
-		ArrayList childlist = new ArrayList();
-
-		int stackCode = t instanceof CoreException ? 1 : 0;
-		// ensure a substatus inside a CoreException is properly logged 
-		if (stackCode == 1) {
-			IStatus coreStatus = ((CoreException) t).getStatus();
-			if (coreStatus != null) {
-				childlist.add(getLog(coreStatus));
-			}
-		}
-
-		if (status.isMultiStatus()) {
-			IStatus[] children = status.getChildren();
-			for (int i = 0; i < children.length; i++) {
-				childlist.add(getLog(children[i]));
-			}
-		}
-
-		FrameworkLogEntry[] children = (FrameworkLogEntry[]) (childlist.size() == 0 ? null : childlist.toArray(new FrameworkLogEntry[childlist.size()]));
-
-		return new FrameworkLogEntry(status.getPlugin(), status.getSeverity(), status.getCode(), status.getMessage(), stackCode, t, children);
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformURLConfigConnection.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformURLConfigConnection.java
deleted file mode 100644
index 143c264..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformURLConfigConnection.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import java.io.*;
-import java.net.URL;
-import java.net.UnknownServiceException;
-import org.eclipse.core.internal.boot.PlatformURLConnection;
-import org.eclipse.core.internal.boot.PlatformURLHandler;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.osgi.service.datalocation.Location;
-import org.eclipse.osgi.util.NLS;
-
-public class PlatformURLConfigConnection extends PlatformURLConnection {
-	private static final String FILE_PROTOCOL = "file"; //$NON-NLS-1$
-	private static boolean isRegistered = false;
-	public static final String CONFIG = "config"; //$NON-NLS-1$
-
-	private boolean parentConfiguration = false;
-
-	/**
-	 * @param url
-	 */
-	public PlatformURLConfigConnection(URL url) {
-		super(url);
-	}
-
-	protected URL resolve() throws IOException {
-		String spec = url.getFile().trim();
-		if (spec.startsWith("/")) //$NON-NLS-1$
-			spec = spec.substring(1);
-		if (!spec.startsWith(CONFIG))
-			throw new IOException(NLS.bind(Messages.url_badVariant, url.toString()));
-		String path = spec.substring(CONFIG.length() + 1);
-		// resolution takes parent configuration into account (if it exists)
-		Location localConfig = Platform.getConfigurationLocation();
-		Location parentConfig = localConfig.getParentLocation();
-		// assume we will find the file locally
-		URL localURL = new URL(localConfig.getURL(), path);
-		if (!FILE_PROTOCOL.equals(localURL.getProtocol()) || parentConfig == null)
-			// we only support cascaded file: URLs
-			return localURL;
-		File localFile = new File(localURL.getPath());
-		if (localFile.exists())
-			// file exists in local configuration
-			return localURL;
-		// try to find in the parent configuration
-		URL parentURL = new URL(parentConfig.getURL(), path);
-		if (FILE_PROTOCOL.equals(parentURL.getProtocol())) {
-			// we only support cascaded file: URLs			
-			File parentFile = new File(parentURL.getPath());
-			if (parentFile.exists()) {
-				// parent has the location
-				parentConfiguration = true;
-				return parentURL;
-			}
-		}
-		return localURL;
-	}
-
-	public static void startup() {
-		// register connection type for platform:/config handling
-		if (isRegistered)
-			return;
-		PlatformURLHandler.register(CONFIG, PlatformURLConfigConnection.class);
-		isRegistered = true;
-	}
-
-	/* (non-Javadoc)
-	 * @see java.net.URLConnection#getOutputStream()
-	 */
-	public OutputStream getOutputStream() throws IOException {
-		if (parentConfiguration || Platform.getConfigurationLocation().isReadOnly())
-			throw new UnknownServiceException(NLS.bind(Messages.url_noOutput, url));
-		//This is not optimal but connection is a private ivar in super.
-		URL resolved = getResolvedURL();
-		if (resolved != null) {
-			String fileString = resolved.getFile();
-			if (fileString != null) {
-				File file = new File(fileString);
-				String parent = file.getParent();
-				if (parent != null)
-					new File(parent).mkdirs();
-				return new FileOutputStream(file);
-			}
-		}
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformURLConverter.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformURLConverter.java
deleted file mode 100644
index 4b7d5c9..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformURLConverter.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import java.io.IOException;
-import java.net.URL;
-import java.net.URLConnection;
-import org.eclipse.core.internal.boot.PlatformURLConnection;
-import org.eclipse.core.internal.boot.PlatformURLHandler;
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.osgi.service.urlconversion.URLConverter;
-
-/**
- * Class which implements the URLConverter service. Manages conversion of a 
- * platform: URL to one with a more well known protocol.
- * 
- * @since 3.2
- */
-public class PlatformURLConverter implements URLConverter {
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.osgi.service.urlconversion.URLConverter#toFileURL(java.net.URL)
-	 */
-	public URL toFileURL(URL url) throws IOException {
-		URLConnection connection = url.openConnection();
-		if (!(connection instanceof PlatformURLConnection))
-			return url;
-		URL result = ((PlatformURLConnection) connection).getURLAsLocal();
-		// if we have a bundle*: url we should try to convert it
-		if (!result.getProtocol().startsWith(PlatformURLHandler.BUNDLE))
-			return result;
-		return FileLocator.toFileURL(result);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.osgi.service.urlconversion.URLConverter#resolve(java.net.URL)
-	 */
-	public URL resolve(URL url) throws IOException {
-		URLConnection connection = url.openConnection();
-		if (!(connection instanceof PlatformURLConnection))
-			return url;
-		URL result = ((PlatformURLConnection) connection).getResolvedURL();
-		// if we have a bundle*: url we should try to convert it
-		if (!result.getProtocol().startsWith(PlatformURLHandler.BUNDLE))
-			return result;
-		return FileLocator.resolve(result);
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformURLFragmentConnection.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformURLFragmentConnection.java
deleted file mode 100644
index 716ad01..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformURLFragmentConnection.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-/**
- * Platform URL support
- * platform:/fragment/fragmentId/		maps to fragmentDescriptor.getInstallURLInternal()
- */
-
-import java.io.IOException;
-import java.net.URL;
-import org.eclipse.core.internal.boot.PlatformURLConnection;
-import org.eclipse.core.internal.boot.PlatformURLHandler;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.Bundle;
-
-public class PlatformURLFragmentConnection extends PlatformURLConnection {
-
-	private Bundle target = null;
-	private static boolean isRegistered = false;
-	public static final String FRAGMENT = "fragment"; //$NON-NLS-1$
-
-	public PlatformURLFragmentConnection(URL url) {
-		super(url);
-	}
-
-	protected boolean allowCaching() {
-		return true;
-	}
-
-	protected URL resolve() throws IOException {
-		String spec = url.getFile().trim();
-		if (spec.startsWith("/")) //$NON-NLS-1$
-			spec = spec.substring(1);
-		if (!spec.startsWith(FRAGMENT))
-			throw new IOException(NLS.bind(Messages.url_badVariant, url));
-		int ix = spec.indexOf("/", FRAGMENT.length() + 1); //$NON-NLS-1$
-		String ref = ix == -1 ? spec.substring(FRAGMENT.length() + 1) : spec.substring(FRAGMENT.length() + 1, ix);
-		String id = getId(ref);
-		target = InternalPlatform.getDefault().getBundle(id);
-		if (target == null)
-			throw new IOException(NLS.bind(Messages.url_resolveFragment, url));
-		URL result = target.getEntry("/"); //$NON-NLS-1$
-		if (ix == -1 || (ix + 1) >= spec.length())
-			return result;
-		else
-			return new URL(result, spec.substring(ix + 1));
-	}
-
-	public static void startup() {
-		// register connection type for platform:/fragment handling
-		if (isRegistered)
-			return;
-		PlatformURLHandler.register(FRAGMENT, PlatformURLFragmentConnection.class);
-		isRegistered = true;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformURLMetaConnection.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformURLMetaConnection.java
deleted file mode 100644
index c052085..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformURLMetaConnection.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import java.io.*;
-import java.net.URL;
-import org.eclipse.core.internal.boot.PlatformURLConnection;
-import org.eclipse.core.internal.boot.PlatformURLHandler;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.Bundle;
-
-public class PlatformURLMetaConnection extends PlatformURLConnection {
-	private Bundle target = null;
-	private static boolean isRegistered = false;
-	public static final String META = "meta"; //$NON-NLS-1$
-
-	/**
-	 * @param url
-	 */
-	public PlatformURLMetaConnection(URL url) {
-		super(url);
-	}
-
-	protected URL resolve() throws IOException {
-		String spec = url.getFile().trim();
-		if (spec.startsWith("/")) //$NON-NLS-1$
-			spec = spec.substring(1);
-		if (!spec.startsWith(META))
-			throw new IOException(NLS.bind(Messages.url_badVariant, url.toString()));
-		int ix = spec.indexOf("/", META.length() + 1); //$NON-NLS-1$
-		String ref = ix == -1 ? spec.substring(META.length() + 1) : spec.substring(META.length() + 1, ix);
-		String id = getId(ref);
-		target = InternalPlatform.getDefault().getBundle(id);
-		if (target == null)
-			throw new IOException(NLS.bind(Messages.url_resolvePlugin, url.toString()));
-		IPath path = Platform.getStateLocation(target);
-		if (ix != -1 || (ix + 1) <= spec.length())
-			path = path.append(spec.substring(ix + 1));
-		return path.toFile().toURL();
-	}
-
-	public static void startup() {
-		// register connection type for platform:/meta handling
-		if (isRegistered)
-			return;
-		PlatformURLHandler.register(META, PlatformURLMetaConnection.class);
-		isRegistered = true;
-	}
-
-	/* (non-Javadoc)
-	 * @see java.net.URLConnection#getOutputStream()
-	 */
-	public OutputStream getOutputStream() throws IOException {
-		//This is not optimal but connection is a private ivar in super.
-		URL resolved = getResolvedURL();
-		if (resolved != null) {
-			String fileString = resolved.getFile();
-			if (fileString != null) {
-				File file = new File(fileString);
-				String parent = file.getParent();
-				if (parent != null)
-					new File(parent).mkdirs();
-				return new FileOutputStream(file);
-			}
-		}
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformURLPluginConnection.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformURLPluginConnection.java
deleted file mode 100644
index 2c4c42b..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformURLPluginConnection.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-/**
- * Platform URL support
- * platform:/plugin/pluginId/		maps to pluginDescriptor.getInstallURLInternal()
- */
-
-import java.io.IOException;
-import java.net.URL;
-import org.eclipse.core.internal.boot.PlatformURLConnection;
-import org.eclipse.core.internal.boot.PlatformURLHandler;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.Bundle;
-
-public class PlatformURLPluginConnection extends PlatformURLConnection {
-
-	private Bundle target = null;
-	private static boolean isRegistered = false;
-	public static final String PLUGIN = "plugin"; //$NON-NLS-1$
-
-	public PlatformURLPluginConnection(URL url) {
-		super(url);
-	}
-
-	protected boolean allowCaching() {
-		return true;
-	}
-
-	protected URL resolve() throws IOException {
-		String spec = url.getFile().trim();
-		if (spec.startsWith("/")) //$NON-NLS-1$
-			spec = spec.substring(1);
-		if (!spec.startsWith(PLUGIN))
-			throw new IOException(NLS.bind(Messages.url_badVariant, url));
-		int ix = spec.indexOf("/", PLUGIN.length() + 1); //$NON-NLS-1$
-		String ref = ix == -1 ? spec.substring(PLUGIN.length() + 1) : spec.substring(PLUGIN.length() + 1, ix);
-		String id = getId(ref);
-		target = InternalPlatform.getDefault().getBundle(id);
-		if (target == null)
-			throw new IOException(NLS.bind(Messages.url_resolvePlugin, url));
-		if (ix == -1 || (ix + 1) >= spec.length())
-			return target.getEntry("/"); //$NON-NLS-1$
-		URL result = target.getEntry(spec.substring(ix + 1));
-		if (result != null)
-			return result;
-		// if the result is null then force the creation of a URL that will throw FileNotFoundExceptions
-		return new URL(target.getEntry("/"), spec.substring(ix + 1)); //$NON-NLS-1$
-		
-	}
-
-	public static void startup() {
-		// register connection type for platform:/plugin handling
-		if (isRegistered)
-			return;
-		PlatformURLHandler.register(PLUGIN, PlatformURLPluginConnection.class);
-		isRegistered = true;
-	}
-
-	public URL[] getAuxillaryURLs() throws IOException {
-		if (target == null) {
-			String spec = url.getFile().trim();
-			if (spec.startsWith("/")) //$NON-NLS-1$
-				spec = spec.substring(1);
-			if (!spec.startsWith(PLUGIN))
-				throw new IOException(NLS.bind(Messages.url_badVariant, url));
-			int ix = spec.indexOf("/", PLUGIN.length() + 1); //$NON-NLS-1$
-			String ref = ix == -1 ? spec.substring(PLUGIN.length() + 1) : spec.substring(PLUGIN.length() + 1, ix);
-			String id = getId(ref);
-			target = InternalPlatform.getDefault().getBundle(id);
-			if (target == null)
-				throw new IOException(NLS.bind(Messages.url_resolvePlugin, url));
-		}
-		Bundle[] fragments = InternalPlatform.getDefault().getFragments(target);
-		int fragmentLength = (fragments == null) ? 0 : fragments.length;
-		if (fragmentLength == 0)
-			return null;
-		URL[] result = new URL[fragmentLength];
-		for (int i = 0; i < fragmentLength; i++)
-			result[i] = fragments[i].getEntry("/"); //$NON-NLS-1$
-		return result;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/Product.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/Product.java
deleted file mode 100644
index bd7eaec..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/Product.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import java.util.HashMap;
-import org.eclipse.core.runtime.*;
-import org.osgi.framework.Bundle;
-
-public class Product implements IProduct {
-	private static final String ATTR_DESCRIPTION = "description"; //$NON-NLS-1$
-	private static final String ATTR_NAME = "name"; //$NON-NLS-1$
-	private static final String ATTR_APPLICATION = "application"; //$NON-NLS-1$
-	private static final String ATTR_VALUE = "value"; //$NON-NLS-1$
-
-	String application = null;
-	String name = null;
-	String id = null;
-	String description = null;
-	HashMap properties;
-	Bundle definingBundle = null;
-
-	public Product(String id, IConfigurationElement element) {
-		this.id = id;
-		if (element == null)
-			return;
-		application = element.getAttribute(ATTR_APPLICATION);
-		name = element.getAttribute(ATTR_NAME);
-		description = element.getAttribute(ATTR_DESCRIPTION);
-		loadProperties(element);
-	}
-
-	private void loadProperties(IConfigurationElement element) {
-		IConfigurationElement[] children = element.getChildren();
-		properties = new HashMap(children.length);
-		for (int i = 0; i < children.length; i++) {
-			IConfigurationElement child = children[i];
-			String key = child.getAttribute(ATTR_NAME);
-			String value = child.getAttribute(ATTR_VALUE);
-			if (key != null && value != null)
-				properties.put(key, value);
-		}
-		definingBundle = Platform.getBundle(element.getContributor().getName());
-	}
-
-	public Bundle getDefiningBundle() {
-		return definingBundle;
-	}
-
-	public String getApplication() {
-		return application;
-	}
-
-	public String getName() {
-		return name;
-	}
-
-	public String getDescription() {
-		return description;
-	}
-
-	public String getId() {
-		return id;
-	}
-
-	public String getProperty(String key) {
-		return (String) properties.get(key);
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/URLTool.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/URLTool.java
deleted file mode 100644
index 30db6a9..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/URLTool.java
+++ /dev/null
@@ -1,332 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Vector;
-import org.eclipse.core.runtime.Assert;
-
-/**
- * A utility for manipulating <code>URL</code>s.
- */
-public class URLTool {
-
-	/**
-	 * Returns the given <code>URL</code> with a trailing slash appended to
-	 * it. If the <code>URL</code> already has a trailing slash the
-	 * <code>URL</code> is returned unchanged.
-	 * <table>
-	 * <caption>Example</caption>
-	 * <tr>
-	 *   <th>Given URL</th>
-	 *   <th>Returned URL</th>
-	 * <tr>
-	 *   <td>"http://hostname/folder"</td>
-	 *   <td>"http://hostname/folder/"</td>
-	 * <tr>
-	 *   <td>"http://hostname/folder/</td>
-	 *   <td>"http://hostname/folder/"</td>
-	 * </table>
-	 *
-	 * @param url a URL
-	 * @return    the given URL with a trailing slash
-	 */
-	public static URL appendTrailingSlash(URL url) {
-		String file = url.getFile();
-		if (file.endsWith("/")) //$NON-NLS-1$
-			return url;
-		try {
-			return new URL(url.getProtocol(), url.getHost(), url.getPort(), file + "/"); //$NON-NLS-1$
-		} catch (MalformedURLException e) {
-			Assert.isTrue(false, "internal error"); //$NON-NLS-1$
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the child URL formed by joining the given member with the
-	 * given parent URL.
-	 *
-	 * @return a child URL of the given parent
-	 */
-	public static URL getChild(URL parent, String member) {
-		String file = parent.getFile();
-		if (!file.endsWith("/")) //$NON-NLS-1$
-			file = file + "/"; //$NON-NLS-1$
-		try {
-			return new URL(parent.getProtocol(), parent.getHost(), parent.getPort(), file + member);
-		} catch (MalformedURLException e) {
-			Assert.isTrue(false, "internal error"); //$NON-NLS-1$
-		}
-		return null;
-	}
-
-	/**
-	 * Returns all elements in the given URLs path.
-	 * <table>
-	 * <caption>Example</caption>
-	 * <tr>
-	 *   <th>Given URL</th>
-	 *   <th>Element</th>
-	 * <tr>
-	 *   <td>"http://hostname/"</td>
-	 *   <td>[]</td>
-	 * <tr>
-	 *   <td>"http://hostname/folder/</td>
-	 *   <td>[folder]</td>
-	 * <tr>
-	 *   <td>"http://hostname/folder/file</td>
-	 *   <td>[folder, file]</td>
-	 * </table>
-	 * @param url a URL
-	 * @return    all elements in the given URLs path
-	 */
-	public static Vector getElements(URL url) {
-		Vector result = new Vector(5);
-		String lastElement = null;
-		while ((lastElement = getLastElement(url)) != null) {
-			result.insertElementAt(lastElement, 0);
-			url = getParent(url);
-		}
-		return result;
-	}
-
-	/**
-	 * Returns the last element in the given URLs path, or <code>null</code>
-	 * if the URL is the root.
-	 * <table>
-	 * <caption>Example</caption>
-	 * <tr>
-	 *   <th>Given URL</th>
-	 *   <th>Last Element</th>
-	 * <tr>
-	 *   <td>"http://hostname/"</td>
-	 *   <td>null</td>
-	 * <tr>
-	 *   <td>"http://hostname/folder/</td>
-	 *   <td>folder</td>
-	 * <tr>
-	 *   <td>"http://hostname/folder/file</td>
-	 *   <td>file</td>
-	 * </table>
-	 * @param url a URL
-	 * @return    the last element in the given URLs path, or
-	 *            <code>null</code> if the URL is the root
-	 */
-	public static String getLastElement(URL url) {
-		String file = url.getFile();
-		int len = file.length();
-		if (len == 0 || len == 1 && file.charAt(0) == '/')
-			return null;
-
-		int lastSlashIndex = -1;
-		for (int i = len - 2; lastSlashIndex == -1 && i >= 0; --i) {
-			if (file.charAt(i) == '/')
-				lastSlashIndex = i;
-		}
-		boolean isDirectory = file.charAt(len - 1) == '/';
-		if (lastSlashIndex == -1) {
-			if (isDirectory) {
-				return file.substring(0, len - 1);
-			} else {
-				return file;
-			}
-		} else {
-			if (isDirectory) {
-				return file.substring(lastSlashIndex + 1, len - 1);
-			} else {
-				return file.substring(lastSlashIndex + 1, len);
-			}
-		}
-	}
-
-	/**
-	 * Returns the parent URL of the given URL, or <code>null</code> if the
-	 * given URL is the root.
-	 * <table>
-	 * <caption>Example</caption>
-	 * <tr>
-	 *   <th>Given URL</th>
-	 *   <th>Parent URL</th>
-	 * <tr>
-	 *   <td>"http://hostname/"</td>
-	 *   <td>null</td>
-	 * <tr>
-	 *   <td>"http://hostname/folder/file</td>
-	 *   <td>"http://hostname/folder/</td>
-	 * </table>
-	 *
-	 * @param url a URL
-	 * @return    the parent of the given URL
-	 */
-	public static URL getParent(URL url) {
-		String file = url.getFile();
-		int len = file.length();
-		if (len == 0 || len == 1 && file.charAt(0) == '/')
-			return null;
-		int lastSlashIndex = -1;
-		for (int i = len - 2; lastSlashIndex == -1 && i >= 0; --i) {
-			if (file.charAt(i) == '/')
-				lastSlashIndex = i;
-		}
-		if (lastSlashIndex == -1)
-			file = ""; //$NON-NLS-1$
-		else
-			file = file.substring(0, lastSlashIndex + 1);
-
-		try {
-			url = new URL(url.getProtocol(), url.getHost(), url.getPort(), file);
-		} catch (MalformedURLException e) {
-			Assert.isTrue(false, e.getMessage());
-		}
-		return url;
-	}
-
-	/**
-	 * Returns the root URL of the given URL.
-	 * <table>
-	 * <caption>Example</caption>
-	 * <tr>
-	 *   <th>Given URL</th>
-	 *   <th>Root URL</th>
-	 * <tr>
-	 *   <td>"http://hostname/"</td>
-	 *   <td>"http://hostname/"</td>
-	 * <tr>
-	 *   <td>"http://hostname/folder/file</td>
-	 *   <td>"http://hostname/"</td>
-	 * </table>
-	 *
-	 * @param urlString a URL
-	 * @return          the root url of the given URL
-	 * @throws          MalformedURLException if the given URL is malformed
-	 */
-	public static URL getRoot(String urlString) throws MalformedURLException {
-		return getRoot(new URL(urlString));
-	}
-
-	/**
-	 * Returns the root URL of the given URL.
-	 * <table>
-	 * <caption>Example</caption>
-	 * <tr>
-	 *   <th>Given URL</th>
-	 *   <th>Root URL</th>
-	 * <tr>
-	 *   <td>"http://hostname/"</td>
-	 *   <td>"http://hostname/"</td>
-	 * <tr>
-	 *   <td>"http://hostname/folder/file</td>
-	 *   <td>"http://hostname/"</td>
-	 * </table>
-	 *
-	 * @param url a URL
-	 * @return    the root URL of the given URL
-	 */
-	public static URL getRoot(URL url) {
-		try {
-			return new URL(url.getProtocol(), url.getHost(), url.getPort(), "/"); //$NON-NLS-1$
-		} catch (MalformedURLException e) {
-			Assert.isTrue(false, "internal error"); //$NON-NLS-1$
-		}
-
-		return null;
-	}
-
-	/**
-	 * Returns the given URL with its trailing slash removed. If the URL has
-	 * no trailing slash, the URL is returned unchanged.
-	 * <table>
-	 * <caption>Example</caption>
-	 * <tr>
-	 *   <th>Given URL</th>
-	 *   <th>Returned URL</th>
-	 * <tr>
-	 *   <td>"http://hostname/folder"</td>
-	 *   <td>"http://hostname/folder"</td>
-	 * <tr>
-	 *   <td>"http://hostname/folder/</td>
-	 *   <td>"http://hostname/folder"</td>
-	 * </table>
-	 *
-	 * @param url a URL
-	 * @return    the given URL with its last slash removed
-	 */
-	public static URL removeTrailingSlash(URL url) {
-		String file = url.getFile();
-
-		if (file.endsWith("/")) { //$NON-NLS-1$
-			file = file.substring(0, file.length() - 1);
-			try {
-				return new URL(url.getProtocol(), url.getHost(), url.getPort(), file);
-			} catch (MalformedURLException e) {
-				Assert.isTrue(false, e.getMessage());
-			}
-		} else {
-			return url;
-		}
-
-		return null;
-	}
-
-	/**
-	 * Returns a boolean indicating whether the given URLs overlap.
-	 * <table>
-	 * <caption>Example</caption>
-	 * <tr>
-	 *   <th>First URL</th>
-	 *   <th>Second URL</th>
-	 *   <th>Do they overlap</th>
-	 * <tr>
-	 *   <td>"http://hostname/folder/"</td>
-	 *   <td>"http://hostname/folder/"</td>
-	 *   <td>true</td>
-	 * <tr>
-	 *   <td>"http://hostname/folder/"</td>
-	 *   <td>"http://hostname/folder/file"</td>
-	 *   <td>true</td>
-	 * <tr>
-	 *   <td>"http://hostname/folder/file"</td>
-	 *   <td>"http://hostname/folder/"</td>
-	 *   <td>true</td>
-	 * <tr>
-	 *   <td>"http://hostname/folder1/"</td>
-	 *   <td>"http://hostname/folder2/"</td>
-	 *   <td>false</td>
-	 * <tr>
-	 *   <td>"http://hostname1/folder/"</td>
-	 *   <td>"http://hostname2/folder/"</td>
-	 *   <td>false</td>
-	 * </table>
-	 * @param  url1 firt URL
-	 * @param  url2 second URL
-	 * @return a boolean indicating whether the given URLs overlap
-	 */
-	public static boolean urlsOverlap(URL url1, URL url2) {
-		if (!getRoot(url1).equals(getRoot(url2))) {
-			return false;
-		}
-
-		Vector elements1 = URLTool.getElements(url1);
-		Vector elements2 = URLTool.getElements(url2);
-
-		for (int i = 0; i < elements1.size() && i < elements2.size(); ++i) {
-			String element1 = (String) elements1.elementAt(i);
-			String element2 = (String) elements2.elementAt(i);
-			if (!element1.equals(element2)) {
-				return false;
-			}
-		}
-
-		return true;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/messages.properties b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/messages.properties
deleted file mode 100644
index 3005fa3..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/messages.properties
+++ /dev/null
@@ -1,98 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-### Runtime plugin messages
-
-### Adapter manager
-adapters_badAdapterFactory = Malformed adapter factory extension in plug-in: {0}.
-
-### application
-application_invalidExtension = Invalid (empty) application extension \"{0}\".
-application_noIdFound = No application id has been found.
-application_notFound = Application \"{0}\" could not be found in the registry. The applications available are: {1}.
-application_returned = The application \"{0}\" returned with code: {1}.
-
-### metadata
-meta_appNotInit = The application has not been initialized.
-meta_authFormatChanged = The platform authorization database file format has changed.  Cached authorization information will be lost.
-meta_exceptionParsingLog = An exception occurred while parsing the log file: {0}
-meta_keyringFileAlreadySpecified = The keyring file location has already been specified {0}.
-meta_unableToReadAuthorization = Unable to read authorization database: {0}.
-meta_unableToWriteAuthorization = Unable to write to authorization database: {0}.
-
-### plugins
-plugin_deactivatedLoad = Attempt to load class \"{0}\" from de-activated plug-in \"{1}\".
-plugin_shutdownProblems = Problems encountered shutting down plug-in: \"{0}\".
-plugin_startupProblems = Problems encountered starting up plug-in: \"{0}\".
-
-### Preferences
-preferences_saveProblems = Problems saving preferences.
-
-### Line Separator Platforms
-line_separator_platform_mac_os_9 = Mac OS 9
-line_separator_platform_unix = Unix
-line_separator_platform_windows = Windows
-
-### Product
-provider_invalid_general = Errors while processing the product providers.
-provider_invalid = Problem creating the provider registered by {0}.
-product_notFound = Product {0} could not be found.
-
-### URL
-url_badVariant = Unsupported \"platform:\" protocol variation \"{0}\".
-url_createConnection = Unable to create connection on \"{0}\".
-url_invalidURL = Invalid URL \"{0}\".
-url_noOutput = Output is not supported for \"{0}\", location is read-only.
-url_noaccess = Unhandled URL protocol \"{0}\".
-url_resolveFragment = Unable to resolve fragment \"{0}\".
-url_resolvePlugin = Unable to resolve plug-in \"{0}\".
-
-### Compatibility - parsing/resolving
-parse_badPrereqOnFrag = Fragment \"{0}\" requires non-existent plug-in \"{1}\".  Fragment ignored.
-parse_duplicateFragment = Duplicate fragment found with id \"{0}\" and version \"{1}\".
-parse_duplicateLib = Fragment \"{0}\" for plug-in \"{1}\", has added duplicate library entry \"{2}\" .
-parse_duplicatePlugin = Two plug-ins found with the same id: \"{0}\". Ignoring duplicate at \"{1}\".
-parse_error = Parsing error: \"{0}\".
-parse_errorNameLineColumn = Parsing error in \"{0}\" [line {1}, column {2}]: \"{3}\".
-parse_errorProcessing = Error while processing \"{0}\".
-parse_extPointDisabled = Extension point \"{0}\" specified in plug-in \"{1}\" is disabled.
-parse_extPointUnknown = Unknown extension point \"{0}\" specified in plug-in \"{1}\".
-parse_fragmentMissingAttr = Fragment \"{0}\" ignored due to missing attributes.
-parse_fragmentMissingIdName = Fragment ignored due to missing attributes (including name and id).
-parse_internalStack = Element/end element mismatch for element \"{0}\".
-parse_missingFPName = Plug-in name attribute missing from fragment at \"{0}\".
-parse_missingFPVersion = Plug-in version attribute missing from fragment at \"{0}\".
-parse_missingFragmentPd = Plug-in descriptor \"{0}\" not found for fragment \"{1}\".  Fragment ignored.
-parse_missingPluginId = Id attribute missing from plug-in or fragment at \"{0}\".
-parse_missingPluginName = Name attribute missing from plug-in or fragment at \"{0}\".
-parse_missingPluginVersion = Version attribute missing from plug-in or fragment at \"{0}\".
-parse_nullFragmentIdentifier = Fragment not loaded due to missing id or version number: \"{0}\".
-parse_nullPluginIdentifier = Plug-in not loaded due to missing id or version number: \"{0}\".
-parse_pluginMissingAttr = Plug-in \"{0}\" disabled due to missing attributes.
-parse_pluginMissingIdName = Plug-in disabled due to missing attributes (including name and id).
-parse_prereqDisabled = Plug-in \"{0}\" was disabled due to missing or disabled prerequisite plug-in \"{1}\".
-parse_prereqLoop = Detected prerequisite loop from \"{0}\" to \"{1}\".
-parse_prereqOptLoop = Optional prerequisite from \"{0}\" to \"{1}\" produced loop.  Prerequisite ignored.
-parse_unknownAttribute = Unknown attribute \"{1}\" for element \"{0}\" ignored.
-parse_unknownElement = Unknown element \"{1}\", found within a \"{0}\", ignored.
-parse_unknownEntry = Unknown element parsed by plug-in registry: \"{0}\".
-parse_unknownLibraryType = Unknown library type \"{0}\" for library \"{1}\".
-parse_unknownTopElement = Unknown element \"{0}\", found at the top level, ignored.
-parse_unsatisfiedOptPrereq = Optional prerequisite constraint from \"{0}\" to\" {1}\" ignored.
-parse_unsatisfiedPrereq = Unable to satisfy prerequisite constraint from \"{0}\" to \"{1}\".
-parse_validExport = \"{0}\" is not a valid value for the attribute \"export\".   Use \"true\" or \"false\".
-parse_validMatch = \"{0}\" is not a valid value for the attribute \"match\".   Use \"perfect\", \"equivalent\", \"compatible\" or \"greaterOrEqual\".
-
-### Compatibility - plugins
-plugin_notPluginClass = Supplied runtime class \"{0}\" does not extend class Plugin.
-plugin_unableToResolve = Unable to resolve plug-in registry.
-plugin_pluginDisabled = Attempt to activate a disabled plug-in: \"{0}\".
-plugin_instantiateClassError = Plug-in \"{0}\" was unable to instantiate class \"{1}\".
-plugin_loadClassError = Plug-in {0} was unable to load class {1}.
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/ILibrary.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/ILibrary.java
deleted file mode 100644
index 5f37a89..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/ILibrary.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-import org.eclipse.osgi.util.ManifestElement;
-import org.osgi.framework.Constants;
-
-/**
- * A runtime library declared in a plug-in.  Libraries contribute elements to the search path.
- * These contributions are specified as a path to a directory or Jar file.  This path is always
- * considered to be relative to the containing plug-in.  
- * <p>
- * Libraries are typed.  The type is used to determine to which search path the library's
- * contribution should be added.  The valid types are: <code>CODE</code> and
- * <code>RESOURCE</code>.  
- * </p><p>
- * This interface is not intended to be implemented by clients.
- * </p>
- *
- * @see IPluginDescriptor#getRuntimeLibraries() 
- * @deprecated 
- * In Eclipse 3.0 the plug-in classpath representation was changed.  Clients of 
- * <code>ILibrary</code> are directed to the headers associated with the relevant bundle.
- * In particular, the <code>Bundle-Classpath</code> header contains all available information
- * about the classpath of a plug-in.  Having retrieved the header, the {@link ManifestElement}
- * helper class can be used to parse the value and discover the individual 
- * class path entries.  The various header attributes are defined in {@link Constants}.
- * <p>For example, 
- * <pre>
- *     String header = bundle.getHeaders().get(Constants.BUNDLE_CLASSPATH);
- *     ManifestElement[] elements = ManifestElement.parseHeader(
- *         Constants.BUNDLE_CLASSPATH, header);
- *     if (elements == null) 
- *         return;
- *     elements[0].getValue();   // the jar/dir containing the code
- *     ...
- * </pre>
- * </p><p>
- * Note that this new structure does not include information on 
- * which packages are exported or present in the listed classpath entries. This 
- * information is no longer relevant.
- * </p><p>
- * See {@link IPluginDescriptor} for information on the relationship between plug-in 
- * descriptors and bundles.
- * </p><p>
- * This interface must only be used by plug-ins 
- * which explicitly require the org.eclipse.core.runtime.compatibility plug-in.
- * </p>
- */
-public interface ILibrary {
-	/**
-	 * Constant string (value "code") indicating the code library type.
-	 * @deprecated As of Eclipse 3.0 library types are obsolete.
-	 * There is no replacement.
-	 */
-	public static final String CODE = "code"; //$NON-NLS-1$
-
-	/**
-	 * Constant string (value "resource") indicating the resource library type.
-	 * @deprecated As of Eclipse 3.0 library types are obsolete.
-	 * There is no replacement.
-	 */
-	public static final String RESOURCE = "resource"; //$NON-NLS-1$
-
-	/**
-	 * Returns the content filters, or <code>null</code>.
-	 * Each content filter identifies a specific class, or
-	 * a group of classes, using a notation and matching rules
-	 * equivalent to Java <code>import</code> declarations
-	 * (e.g., "java.io.File", or "java.io.*"). Returns <code>null</code>
-	 * if the library is not exported, or it is fully exported
-	 * (no filtering).
-	 *
-	 * @return the content filters, or <code>null</code> if none
-	 * @deprecated As of Eclipse 3.0 content filters are obsolete.  
-	 * There is no replacement.
-	 */
-	public String[] getContentFilters();
-
-	/**
-	 * Returns the path of this runtime library, relative to the
-	 * installation location.
-	 *
-	 * @return the path of the library
-	 * @see IPluginDescriptor#getInstallURL()
-	 * @deprecated 
-	 * Given a manifest element corresponding to a classpath entry, the path
-	 * for the entry can be accessed by getting the value of the manifest element.  
-	 * For example,
-	 * <pre>
-	 *     element.getValue();   // the jar/dir containing the code
-	 * </pre>
-	 */
-	public IPath getPath();
-
-	/**
-	 * Returns this library's type.
-	 *
-	 * @return the type of this library.   The valid types are: <code>CODE</code> and <code>RESOURCE</code>.
-	 * @see #CODE
-	 * @see #RESOURCE
-	 * @deprecated As of Eclipse 3.0 library types are obsolete.
-	 * There is no replacement.
-	 */
-	public String getType();
-
-	/**
-	 * Returns whether the library is exported. The contents of an exported
-	 * library may be visible to other plug-ins that declare a dependency
-	 * on the plug-in containing this library, subject to content filtering.
-	 * Libraries that are not exported are entirely private to the declaring
-	 * plug-in.
-	 *
-	 * @return <code>true</code> if the library is exported, <code>false</code>
-	 *    if it is private
-	 * @deprecated As of Eclipse 3.0 exporting an individual library is obsolete.
-	 * There is no replacement.
-	 */
-	public boolean isExported();
-
-	/**
-	 * Returns whether this library is fully exported. A library is considered
-	 * fully exported iff it is exported and has no content filters.
-	 *
-	 * @return <code>true</code> if the library is fully exported, and
-	 *    <code>false</code> if it is private or has filtered content
-	 * @deprecated As of Eclipse 3.0 exporting an individual library is obsolete.
-	 * There is no replacement.
-	 */
-	public boolean isFullyExported();
-
-	/**
-	 * Returns the array of package prefixes that this library declares. This 
-	 * is used in classloader enhancements and is an optional entry in the plugin.xml.
-	 * 
-	 * @return the array of package prefixes or <code>null</code>
-	 * @since 2.1
-	 * @deprecated As of Eclipse 3.0 package prefix filtering is obsolete.
-	 * There is no replacement.
-	 */
-	public String[] getPackagePrefixes();
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/ILog.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/ILog.java
deleted file mode 100644
index 468c101..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/ILog.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-import org.osgi.framework.Bundle;
-
-/**
- * A log to which status events can be written.  Logs appear on individual
- * plug-ins and on the platform itself.  Clients can register log listeners which
- * will receive notification of all log events as they come in.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * XXX Need to create a new log interface on common plugin. That interface should be a super interface of this ILog.
- * getBundle() would stay here. In the super interface we would have getName()
- */
-public interface ILog {
-	/**
-	 * Adds the given log listener to this log.  Subsequently the log listener will
-	 * receive notification of all log events passing through this log.
-	 * This method has no affect if the identical listener is already registered on this log.
-	 *
-	 * @param listener the listener to add to this log
-	 * @see Platform#addLogListener(ILogListener)
-	 */
-	public void addLogListener(ILogListener listener);
-
-	/**
-	 * Returns the plug-in with which this log is associated.
-	 *
-	 * @return the plug-in with which this log is associated
-	 * @since 3.0
-	 */
-	public Bundle getBundle();
-
-	/**
-	 * Logs the given status.  The status is distributed to the log listeners
-	 * installed on this log and then to the log listeners installed on the platform.
-	 *
-	 * @param status the status to log
-	 */
-	public void log(IStatus status);
-
-	/**
-	 * Removes the given log listener to this log.  Subsequently the log listener will
-	 * no longer receive notification of log events passing through this log.  
-	 * This method has no affect if the identical listener is not registered on this log.
-	 *
-	 * @param listener the listener to remove
-	 * @see Platform#removeLogListener(ILogListener)
-	 */
-	public void removeLogListener(ILogListener listener);
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/IPlatformRunnable.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/IPlatformRunnable.java
deleted file mode 100644
index 10f7002..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/IPlatformRunnable.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-/**
- * Bootstrap type for the platform. Platform runnables represent executable 
- * entry points into plug-ins.  Runnables can be configured into the Platform's
- * <code>org.eclipse.core.runtime.applications</code> extension-point 
- * or be made available through code or extensions on other plug-in's extension-points.
- *
- * <p>
- * Clients may implement this interface.
- * </p>
- * 
- * @since 3.0
- */
-public interface IPlatformRunnable {
-
-	/**
-	 * Exit object indicating normal termination
-	 */
-	public static final Integer EXIT_OK = new Integer(0);
-
-	/**
-	 * Exit object requesting platform restart
-	 */
-	public static final Integer EXIT_RESTART = new Integer(23);
-
-	/**
-	 * Exit object requesting that the command passed back be executed.  Typically
-	 * this is used to relaunch Eclipse with different command line arguments.
-	 */
-	public static final Integer EXIT_RELAUNCH = new Integer(24);
-
-	/**
-	 * Runs this runnable with the given args and returns a result.
-	 * The content of the args is unchecked and should conform to the expectations of
-	 * the runnable being invoked.  Typically this is a <code>String</code> array.
-	 * Applications can return any object they like.  If an <code>Integer</code> is returned
-	 * it is treated as the program exit code if Eclipse is exiting.
-	 * 
-	 * @param args the argument(s) to pass to the application
-	 * @return the return value of the application
-	 * @exception Exception if there is a problem running this runnable.
-	 * @see #EXIT_OK
-	 * @see #EXIT_RESTART
-	 * @see #EXIT_RELAUNCH
-	 */
-	public Object run(Object args) throws Exception;
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/IPluginDescriptor.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/IPluginDescriptor.java
deleted file mode 100644
index bb4b901..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/IPluginDescriptor.java
+++ /dev/null
@@ -1,524 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-import java.net.URL;
-import java.util.*;
-
-/**
- * A plug-in descriptor contains information about a plug-in
- * obtained from the plug-in's manifest (<code>plugin.xml</code>) file.
- * <p>
- * Plug-in descriptors are platform-defined objects that exist
- * in the plug-in registry independent of whether a plug-in has
- * been started. In contrast, a plug-in's runtime object 
- * (<code>getPlugin</code>) generally runs plug-in-defined code.
- * </p>
- * <p>This interface is not intended to be implemented by clients.
- * </p>
- *
- * @deprecated 
- * <code>IPluginDescriptor</code> was refactored in Eclipse 3.0.
- * Most of the functionality has moved to {@link Platform} and the 
- * plug-in descriptor has been replaced with the OSGi <code>Bundle</code> 
- * object.
- * <p>
- * This interface must only be used by plug-ins 
- * which explicitly require the org.eclipse.core.runtime.compatibility plug-in.
- * </p>
- * <p>
- * For most uses the bundle object can be treated as an opaque token
- * representing your plug-in to the system -- It must be supplied to various 
- * <code>Platform</code> methods but need not be interrogated itself.
- * There are a small number of plug-in descriptor method equivalents 
- * supplied by <code>Bundle</code> itself.  The details are spelled out
- * in the comments on each <code>IPluginDescriptor</code> method.
- * </p>
- * <p>
- * Clients of this interface have a reference to an <code>IPluginDescriptor</code> 
- * corresponding to a plug-in.  To adapt to the deprecation, the bundle corresponding
- * to the plug-in generally needs to be acquired. There are several cases:
- * <ul>
- * <li>the descriptor was discovered using methods such as 
- * <code>IPluginRegistry.getPluginDescriptor()</code>.  The code should be 
- * updated to use one of the bundle discovery mechanisms such as 
- * <code>Platform.getBundle()</code>.
- * </li>
- * <li>the descriptor is from the plug-in itself.  The code should be updated to
- * use the plug-in's bundle instead.
- * </li>
- * <li>the descriptor is supplied by a third party.  The plug-in writer must 
- * cooperate with that party to obtain a bundle rather than a descriptor.
- * </li>
- * </ul>
- * </p>
- * <p>
- * The resulting bundle object can be used
- * to carry out the adaptation steps outlined for each of the 
- * <code>IPluginDescriptor</code> methods.
- * </p>
- * 
- * @see #getPlugin()
- */
-public interface IPluginDescriptor {
-	/**
-	 * Returns the extension with the given simple identifier declared in
-	 * this plug-in, or <code>null</code> if there is no such extension.
-	 * Since an extension might not have an identifier, some extensions
-	 * can only be found via the <code>getExtensions</code> method.
-	 *
-	 * @param extensionName the simple identifier of the extension (e.g. <code>"main"</code>).
-	 * @return the extension, or <code>null</code>
-	 * @deprecated 
-	 * Use 
-	 * <pre>
-	 *     Platform.getExtensionRegistry().getExtension(id + "." + extensionName) 
-	 * </pre>
-	 * where <code>id</code> is the plug-in id.
-	 */
-	public IExtension getExtension(String extensionName);
-
-	/**
-	 * Returns the extension point with the given simple identifier
-	 * declared in this plug-in, or <code>null</code> if there is no such extension point.
-	 *
-	 * @param extensionPointId the simple identifier of the extension point (e.g. <code>"wizard"</code>).
-	 * @return the extension point, or <code>null</code>
-	 * @deprecated  
-	 * Use 
-	 * <pre>
-	 *     Platform.getExtensionRegistry().getExtensionPoint(id, extensionPointId) 
-	 * </pre>
-	 * where <code>id</code> is the plug-in id.
-	 */
-	public IExtensionPoint getExtensionPoint(String extensionPointId);
-
-	/**
-	 * Returns all extension points declared by this plug-in.
-	 * Returns an empty array if this plug-in does not declare any extension points.
-	 *
-	 * @return the extension points declared by this plug-in
-	 * @deprecated 
-	 * Use 
-	 * <pre>
-	 *     Platform.getExtensionRegistry().getExtensionPoints(id) 
-	 * </pre>
-	 * where <code>id</code> is the plug-in id.
-	 */
-	public IExtensionPoint[] getExtensionPoints();
-
-	/**
-	 * Returns all extensions declared by this plug-in.
-	 * Returns an empty array if this plug-in does not declare any extensions.
-	 *
-	 * @return the extensions declared by this plug-in
-	 * @deprecated 
-	 * Use 
-	 * <pre>
-	 *     Platform.getExtensionRegistry().getExtensions(id) 
-	 * </pre>
-	 * where <code>id</code> is the plug-in id.
-	 */
-	public IExtension[] getExtensions();
-
-	/**
-	 * Returns the URL of this plug-in's install directory. 
-	 * This is the directory containing
-	 * the plug-in manifest file, resource bundle, runtime libraries,
-	 * and any other files supplied with this plug-in. This directory is usually
-	 * read-only. Plug-in relative information should be written to the location 
-	 * provided by <code>Plugin.getStateLocation</code>.
-	 *
-	 * @return the URL of this plug-in's install directory
-	 * @see #getPlugin()
-	 * @see Plugin#getStateLocation()
-	 * @deprecated 
-	 * Use 
-	 * <pre>
-	 *     bundle.getEntry("/");
-	 * </pre>
-	 * where <code>bundle</code> is the bundle associated with 
-	 * the relevant plug-in or simply use the <code>getEntry</code> API
-	 * to construct the desired URL.
-	 */
-	public URL getInstallURL();
-
-	/**
-	 * Returns a displayable label for this plug-in.
-	 * Returns the empty string if no label for this plug-in
-	 * is specified in the plug-in manifest file.
-	 * <p> Note that any translation specified in the plug-in manifest
-	 * file is automatically applied.
-	 * </p>
-	 *
-	 * @return a displayable string label for this plug-in,
-	 *    possibly the empty string
-	 * @see #getResourceString(String)
-	 * @deprecated 
-	 * Use 
-	 * <pre>
-	 *     bundle.getHeaders().get(org.osgi.framework.Constants.BUNDLE_NAME) 
-	 * </pre>
-	 * where <code>bundle</code> is the bundle associated with 
-	 * the relevant plug-in.
-	 */
-	public String getLabel();
-
-	/**
-	 * Returns the plug-in runtime object corresponding to this
-	 * plug-in descriptor. Unlike other methods on this object,
-	 * invoking this method may activate the plug-in.
-	 * The returned object is an instance of the plug-in runtime class
-	 * specified in the plug-in's manifest file;
-	 * if a class is not specified there, the returned object
-	 * is an internally-supplied one that does not react to life cycle requests.
-	 *
-	 * @return the plug-in runtime object
-	 * @exception CoreException 
-	 *   if this plug-in's runtime object could not be created.
-	 * @see #isPluginActivated()
-	 * @deprecated 
-	 * In Eclipse 3.0 plug-in runtime objects are not globally managed and
-	 * so are not generically accessible.  Rather, each plug-in is free to declare
-	 * API which exposes the plug-in runtime object (e.g., <code>MyPlugin.getInstance()</code>).
-	 * 
-	 * If this method is being used to activate a plug-in then the following code is
-	 * equivalent:
-	 * <pre>
-	 *     bundle.start()
-	 * </pre>
-	 * where <code>bundle</code> is the bundle associated with 
-	 * the relevant plug-in.
-	 */
-	public Plugin getPlugin() throws CoreException;
-
-	/**
-	 * Returns the plug-in class loader used to load classes and resources
-	 * for this plug-in. The class loader can be used to directly access
-	 * plug-in resources and classes. Note that accessing a resource will
-	 * <b>not activate</b> the corresponding plug-in. Successfully loading 
-	 * a class will <b>always activate</b> the corresponding plug-in.
-	 * <p> 
-	 * The following examples illustrate the direct use of the plug-in class
-	 * loader and its effect on plug-in activation (example ignores error
-	 * handling).
-	 *
-	 * <pre>
-	 *     ClassLoader loader = descriptor.getPluginClassLoader();
-	 *
-	 *     // Load resource by name. Will not activate the plug-in.
-	 *     URL res = loader.getResource("com/example/Foo/button.gif");
-	 *     InputStream is = loader.getResourceAsStream("splash.jpg");
-	 *
-	 *     // Load resource for class. Will activate the plug-in because
-	 *     // the referenced class is loaded first and triggers activation.
-	 *     URL u = com.example.Foo.class.getResource("button.gif");
-	 *
-	 *     // Load class by name. Will activate the plug-in.
-	 *     Class c = loader.loadClass("com.example.Bar");
-	 *
-	 *     // Load a resource bundle. May, or may not activate the plug-in, depending
-	 *     // on the bundle implementation. If implemented as a class, the plug-in
-	 *     // will be activated. If implemented as a properties file, the plug-in will
-	 *     // not be activated.
-	 *     ResourceBundle b = 
-	 *         ResourceBundle.getBundle("bundle", Locale.getDefault(), loader);
-	 * </pre>
-	 *
-	 * @return the plug-in class loader
-	 * @see IConfigurationElement#createExecutableExtension(String)
-	 * @see #isPluginActivated()
-	 * @see #getResourceBundle()
-	 * @deprecated 
-	 * Use 
-	 * <pre>
-	 *     bundle.loadClass(className)
-	 * </pre>
-	 * where <code>bundle</code> is the bundle associated with 
-	 * the relevant plug-in.
-	 */
-	public ClassLoader getPluginClassLoader();
-
-	/**
-	 * Returns a list of plug-in prerequisites required
-	 * for correct execution of this plug-in.
-	 *
-	 * @return an array of plug-in prerequisites, or an empty array
-	 * if no prerequisites were specified
-	 * @deprecated 
-	 * Use 
-	 * <pre>
-	 *     import org.eclipse.osgi.util.ManifestElement;
-	 *     import org.osgi.framework.Constants;
-	 *     ...
-	 *     String requires = bundle.getHeaders().get(Constants.REQUIRE_BUNDLE);
-	 *     ManifestElement[] elements = ManifestElement.parseHeader(Constants.REQUIRE_BUNDLE, requires);
-	 * </pre>
-	 * where <code>bundle</code> is the bundle associated with 
-	 * the relevant plug-in.  The resultant elements array contains one
-	 * entry for each required plug-in.
-	 */
-	public IPluginPrerequisite[] getPluginPrerequisites();
-
-	/**
-	 * Returns the name of the provider of this plug-in.
-	 * Returns the empty string if no provider name is specified in 
-	 * the plug-in manifest file.
-	 * <p> Note that any translation specified in the plug-in manifest
-	 * file is automatically applied.
-	 * </p>
-	 * @return the name of the provider, possibly the empty string
-	 * @see #getResourceString(String)
-	 * @deprecated
-	 * Use 
-	 * <pre>
-	 *     bundle.getHeaders().get(org.osgi.framework.Constants.BUNDLE_VENDOR) 
-	 * </pre>
-	 * where <code>bundle</code> is the bundle associated with 
-	 * the relevant plug-in.
-	 */
-	public String getProviderName();
-
-	/**
-	 * Returns this plug-in's resource bundle for the current locale. 
-	 * <p>
-	 * The bundle is stored as the <code>plugin.properties</code> file 
-	 * in the plug-in install directory, and contains any translatable
-	 * strings used in the plug-in manifest file (<code>plugin.xml</code>)
-	 * along with other resource strings used by the plug-in implementation.
-	 * </p>
-	 *
-	 * @return the resource bundle
-	 * @exception MissingResourceException if the resource bundle was not found
-	 * @deprecated 
-	 * Use 
-	 * <pre>
-	 *     Platform.getResourceBundle(bundle)
-	 * </pre>
-	 * where <code>bundle</code> is the bundle associated with 
-	 * the relevant plug-in.
-	 */
-	public ResourceBundle getResourceBundle() throws MissingResourceException;
-
-	/**
-	 * Returns a resource string corresponding to the given argument value.
-	 * If the argument value specifies a resource key, the string
-	 * is looked up in the default resource bundle. If the argument does not
-	 * specify a valid key, the argument itself is returned as the
-	 * resource string. The key lookup is performed in the
-	 * plugin.properties resource bundle. If a resource string 
-	 * corresponding to the key is not found in the resource bundle
-	 * the key value, or any default text following the key in the
-	 * argument value is returned as the resource string.
-	 * A key is identified as a string beginning with the "%" character.
-	 * Note, that the "%" character is stripped off prior to lookup
-	 * in the resource bundle.
-	 * <p>
-	 * Equivalent to <code>getResourceString(value, getResourceBundle())</code>
-	 * </p>
-	 *
-	 * @param value the value
-	 * @return the resource string
-	 * @see #getResourceBundle()
-	 * @deprecated 
-	 * Use 
-	 * <pre>
-	 *     Platform.getResourceString(bundle, value)
-	 * </pre>
-	 * where <code>bundle</code> is the bundle associated with 
-	 * the relevant plug-in.
-	 */
-	public String getResourceString(String value);
-
-	/**
-	 * Returns a resource string corresponding to the given argument 
-	 * value and bundle.
-	 * If the argument value specifies a resource key, the string
-	 * is looked up in the given resource bundle. If the argument does not
-	 * specify a valid key, the argument itself is returned as the
-	 * resource string. The key lookup is performed against the
-	 * specified resource bundle. If a resource string 
-	 * corresponding to the key is not found in the resource bundle
-	 * the key value, or any default text following the key in the
-	 * argument value is returned as the resource string.
-	 * A key is identified as a string beginning with the "%" character.
-	 * Note that the "%" character is stripped off prior to lookup
-	 * in the resource bundle.
-	 * <p>
-	 * For example, assume resource bundle plugin.properties contains
-	 * name = Project Name
-	 * <pre>
-	 *     getResourceString("Hello World") returns "Hello World"</li>
-	 *     getResourceString("%name") returns "Project Name"</li>
-	 *     getResourceString("%name Hello World") returns "Project Name"</li>
-	 *     getResourceString("%abcd Hello World") returns "Hello World"</li>
-	 *     getResourceString("%abcd") returns "%abcd"</li>
-	 *     getResourceString("%%name") returns "%name"</li>
-	 * </pre>
-	 * </p>
-	 *
-	 * @param value the value
-	 * @param resourceBundle the resource bundle
-	 * @return the resource string
-	 * @see #getResourceBundle()
-	 * @deprecated 
-	 * Use 
-	 * <pre>
-	 *     Platform.getResourceString(bundle, value, resourceBundle) 
-	 * </pre>
-	 * where <code>bundle</code> is the bundle associated with 
-	 * the relevant plug-in.
-	 */
-	public String getResourceString(String value, ResourceBundle resourceBundle);
-
-	/**
-	 * Returns all runtime libraries declared by this plug-in.
-	 * Returns an empty array if this plug-in has no runtime libraries.
-	 *
-	 * @return the runtime libraries declared by this plug-in
-	 * @deprecated 
-	 * Use 
-	 * <pre>
-	 *     import org.eclipse.osgi.util.ManifestElement;
-	 *     import org.osgi.framework.Constants;
-	 *     ...
-	 *     String requires = bundle.getHeaders().get(Constants.BUNDLE_CLASSPATH);
-	 *     ManifestElement[] elements = ManifestElement.parseHeader(Constants.BUNDLE_CLASSPATH, requires);
-	 * </pre>
-	 * where <code>bundle</code> is the bundle associated with 
-	 * the relevant plug-in.  The resultant elements array contains one
-	 * entry for each entry on the bundle's classpath..
-	 */
-	public ILibrary[] getRuntimeLibraries();
-
-	/**
-	 * Returns the unique identifier of this plug-in.
-	 * This identifier is a non-empty string and is unique 
-	 * within the plug-in registry.
-	 *
-	 * @return the unique identifier of the plug-in (e.g. <code>"org.eclipse.core.runtime"</code>)
-	 * @deprecated 
-	 * Use 
-	 * <pre>
-	 *     bundle.getSymbolicName() 
-	 * </pre>
-	 * where <code>bundle</code> is the bundle associated with 
-	 * the relevant plug-in.
-	 */
-	public String getUniqueIdentifier();
-
-	/**
-	 * Returns the version identifier of this plug-in.
-	 *
-	 * @return the plug-in version identifier
-	 * @deprecated 
-	 * Use 
-	 * <pre>
-	 *     String version = (String) bundle.getHeaders().get(org.osgi.framework.Constants.BUNDLE_VERSION);
-	 *     new PluginVersionIdentifier(version); 
-	 * </pre>
-	 * where <code>bundle</code> is the bundle associated with 
-	 * the relevant plug-in.
-	 */
-	public PluginVersionIdentifier getVersionIdentifier();
-
-	/**
-	 * Returns whether the plug-in described by this descriptor
-	 * has been activated. Invoking this method will not cause the
-	 * plug-in to be activated.
-	 *
-	 * @return <code>true</code> if this plug-in is activated, and
-	 *   <code>false</code> otherwise
-	 * @see #getPlugin()
-	 * @deprecated 
-	 * Use 
-	 * <pre>
-	 *     bundle.getState == org.osgi.framework.Bundle.ACTIVE 
-	 * </pre>
-	 * where <code>bundle</code> is the bundle associated with 
-	 * the relevant plug-in.
-	 */
-	public boolean isPluginActivated();
-
-	/**
-	 * Returns a URL for the given path.  Returns <code>null</code> if the URL
-	 * could not be computed or created.
-	 * 
-	 * @param path path relative to plug-in installation location 
-	 * @return a URL for the given path or <code>null</code>  It is not
-	 * necessary to perform a 'resolve' on this URL.
-	 * 
-	 * @since 2.0
-	 * @deprecated 
-	 * Use 
-	 * <pre>
-	 *     Platform.find(bundle, file) 
-	 * </pre>
-	 * where <code>bundle</code> is the bundle associated with 
-	 * the relevant plug-in.
-	 */
-	public URL find(IPath path);
-
-	/**
-	 * Returns a URL for the given path.  Returns <code>null</code> if the URL
-	 * could not be computed or created.
-	 * 
-	 * find will look for this path under the directory structure for this plugin
-	 * and any of its fragments.  If this path will yield a result outside the
-	 * scope of this plugin, <code>null</code> will be returned.  Note that
-	 * there is no specific order to the fragments.
-	 * 
-	 * The following arguments may also be used
-	 * 
-	 *  $nl$ - for language specific information
-	 *  $os$ - for operating system specific information
-	 *  $ws$ - for windowing system specific information
-	 * 
-	 * A path of $nl$/about.properties in an environment with a default 
-	 * locale of en_CA will return a URL corresponding to the first place
-	 * about.properties is found according to the following order:
-	 *   plugin root/nl/en/CA/about.properties
-	 *   fragment1 root/nl/en/CA/about.properties
-	 *   fragment2 root/nl/en/CA/about.properties
-	 *   ...
-	 *   plugin root/nl/en/about.properties
-	 *   fragment1 root/nl/en/about.properties
-	 *   fragment2 root/nl/en/about.properties
-	 *   ...
-	 *   plugin root/about.properties
-	 *   fragment1 root/about.properties
-	 *   fragment2 root/about.properties
-	 *   ...
-	 * 
-	 * If a locale other than the default locale is desired, use an
-	 * override map.
-	 * 
-	 * @param path file path relative to plug-in installation location
-	 * @param override map of override substitution arguments to be used for
-	 * any $arg$ path elements. The map keys correspond to the substitution
-	 * arguments (eg. "$nl$" or "$os$"). The resulting
-	 * values must be of type java.lang.String. If the map is <code>null</code>,
-	 * or does not contain the required substitution argument, the default
-	 * is used.
-	 * @return a URL for the given path or <code>null</code>.  It is not
-	 * necessary to perform a 'resolve' on this URL.
-	 * 
-	 * @since 2.0
-	 * @deprecated 
-	 * Use 
-	 * <pre>
-	 *     Platform.find(bundle, path, override) 
-	 * </pre>
-	 * where <code>bundle</code> is the bundle associated with 
-	 * the relevant plug-in.
-	 */
-	public URL find(IPath path, Map override);
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/IPluginPrerequisite.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/IPluginPrerequisite.java
deleted file mode 100644
index e296532..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/IPluginPrerequisite.java
+++ /dev/null
@@ -1,272 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.util.ManifestElement;
-import org.osgi.framework.Constants;
-
-/**
- * A prerequisite entry declared by a plug-in. The declaration causes
- * classes defined by the prerequisite plug-in to be visible
- * to the plug-in that declared the dependency.
- * <p>
- * This interface is not intended to be implemented by developers.
- * </p>
- *
- * @see IPluginDescriptor#getPluginPrerequisites()
- * @deprecated 
- * In Eclipse 3.0 the plug-in prerequisite representation was changed.  Clients of 
- * <code>IPluginPrerequisite</code> are directed to the headers associated with the relevant bundle.
- * In particular, the <code>Require-Bundle</code> header contains all available information
- * about the prerequisites of a plug-in.  Having retrieved the header, the {@link ManifestElement}
- * helper class can be used to parse the value and discover the individual 
- * prerequisite plug-ins.  The various header attributes are defined in {@link Constants}.
- * <p>For example, 
- * <pre>    String header = bundle.getHeaders().get(Constants.REQUIRE_BUNDLE);
- *     ManifestElement[] elements = ManifestElement.parseHeader(
- *         Constants.REQUIRE_BUNDLE, header);
- *     if (elements == null) 
- *         return;
- *     elements[0].getValue();   // the prerequisite plug-in id
- *     elements[0].getAttribute(Constants.BUNDLE_VERSION_ATTRIBUTE);   // the prerequisite plug-in version
- *     ...
- * </pre>
- * </p><p>
- * See {@link IPluginDescriptor} for information on the relationship between plug-in 
- * descriptors and bundles.
- * </p><p>
- * This interface must only be used by plug-ins 
- * which explicitly require the org.eclipse.core.runtime.compatibility plug-in.
- * </p>
- */
-public interface IPluginPrerequisite {
-	/**
-	 * Returns the actual version identifier that is used
-	 * at runtime to resolve this prerequisite dependency,
-	 * or null, if the dependency is not resolved.
-	 * 
-	 * @return the plug-in version identifier, or null
-	 * @deprecated Callers of this method should interrogate the current {@link State}
-	 * of the platform.  For example, 
-	 * <pre>
-	 *     State state = Platform.getPlatformAdmin().getState();
-	 *     BundleDescription bundle = state.getBundle("my plug-in id", my plug-in version);
-	 *     BundleSpecification spec = bundle.getRequiredBundle("required plug-in id");
-	 *     BundleDescription prereq = spec.getSupplier();
-	 * </pre>
-	 */
-	public PluginVersionIdentifier getResolvedVersionIdentifier();
-
-	/**
-	 * Returns the plug-in identifier of the prerequisite plug-in.
-	 * 
-	 * @return the plug-in identifier
-	 * @deprecated Given a manifest element equivalent of a plug-in 
-	 * prerequisite (see the class comment), this method is replaced by:
-	 * <pre>
-	 *     element.getValue();
-	 * </pre>
-	 */
-	public String getUniqueIdentifier();
-
-	/**
-	 * Returns the version identifier of the prerequisite plug-in,
-	 * or <code>null</code> if none.
-	 * 
-	 * @return the plug-in version identifier, or <code>null</code> if 
-	 *    none was specified
-	 * @deprecated Callers of this method should interrogate the current {@link State}
-	 * of the platform.  For example, 
-	 * <pre>
-	 *     State state = Platform.getPlatformAdmin().getState();
-	 *     BundleDescription bundle = state.getBundle("my plug-in id", my plug-in version);
-	 *     BundleSpecification spec = bundle.getRequiredBundle("required plug-in id");
-	 *     Version reqMinVersion = spec.getVersionRange().getMinimum();
-	 * </pre>
-	 */
-	public PluginVersionIdentifier getVersionIdentifier();
-
-	/**
-	 * Indicates whether this prerequisite plug-in is further exposed to any
-	 * plug-ins that declare a dependency on this plug-in. This allows
-	 * for chaining of dependencies. For example, if plug-in A depends
-	 * on plug-in B which depends on plug-in C, the classes from C 
-	 * are typically visible to B, but not to A.  A can get around this 
-	 * if either B explicitly exports its dependency on C, or 
-	 * A explicitly declares C as a prerequisite in addition to B.
-	 * 
-	 * @return <code>true</code> if this prerequisite plug-in is exposed,
-	 *    <code>false</code> otherwise
-	 * @deprecated Given a manifest element equivalent of a plug-in 
-	 * prerequisite (see the class comment), this method is replaced by:
-	 * <pre>
-	 *     element.getAttribute(Constants.REPROVIDE_ATTRIBUTE);
-	 * </pre>
-	 */
-	public boolean isExported();
-
-	/**
-	 * Indicates that this plug-in prerequisite can be resolved
-	 * against a configured plug-in with an identifier that is
-	 * greater than or equal to it.
-	 *
-	 * @return <code>true</code> if greater or equal match is allowed,
-	 *   <code>false</code> otherwise.
-	 * @since 2.0
-	 * @deprecated Callers of this method should interrogate the current {@link State}
-	 * of the platform.  For example, 
-	 * <pre>
-	 *     State state = Platform.getPlatformAdmin().getState();
-	 *     BundleDescription bundle = state.getBundle("my plug-in id", my plug-in version);
-	 *     BundleSpecification spec = bundle.getRequiredBundle("required plug-in id");
-	 *     VersionRange versionRange = spec.getVersionRange();
-	 *     if (versionRange == null || versionRange.getMinimum() == null)
-	 *         return false;
-	 *     Version minimum = versionRange.getMinimum();
-	 *     Version maximum = versionRange.getMaximum() == null ? Version.maxVersion : versionRange.getMaximum();
-	 *     if (maximum.equals(Version.maxVersion))
-	 *         return true;
-	 *     return false;
-	 * </pre>
-	 */
-	public boolean isMatchedAsGreaterOrEqual();
-
-	/**
-	 * Indicates that this plug-in prerequisite can be resolved
-	 * against a configured plug-in with a compatible identifier.
-	 *
-	 * @return <code>true</code> if compatible match is allowed,
-	 *   <code>false</code> if exact match is required.
-	 * @deprecated Callers of this method should interrogate the current {@link State}
-	 * of the platform.  For example, 
-	 * <pre>
-	 *     State state = Platform.getPlatformAdmin().getState();
-	 *     BundleDescription bundle = state.getBundle("my plug-in id", my plug-in version);
-	 *     BundleSpecification spec = bundle.getRequiredBundle("required plug-in id");
-	 *     VersionRange versionRange = spec.getVersionRange();
-	 *     if (versionRange == null || versionRange.getMinimum() == null)
-	 *         return false;
-	 *     Version minimum = versionRange.getMinimum();
-	 *     Version maximum = versionRange.getMaximum() == null ? Version.maxVersion : versionRange.getMaximum();
-	 *     if (!minimum.isInclusive() || maximum.isInclusive())
-	 *         return false;
-	 *     else if (minimum.getMajorComponent() == maximum.getMajorComponent() - 1)
-	 *         return true;
-	 *     return false;	
-	 * </pre>
-	 */
-	public boolean isMatchedAsCompatible();
-
-	/**
-	 * Indicates that this plug-in prerequisite can only be resolved
-	 * against a configured plug-in with an equivalent plug-in 
-	 * identifier.
-	 *
-	 * @return <code>true</code> if only equivalent identifier match
-	 * satisfies this dependency, <code>false</code> otherwise.
-	 * @since 2.0
-	 * @deprecated Callers of this method should interrogate the current {@link State}
-	 * of the platform.  For example, 
-	 * <pre>
-	 *     State state = Platform.getPlatformAdmin().getState();
-	 *     BundleDescription bundle = state.getBundle("my plug-in id", my plug-in version);
-	 *     BundleSpecification spec = bundle.getRequiredBundle("required plug-in id");
-	 *     VersionRange versionRange = spec.getVersionRange();
-	 *     if (versionRange == null || versionRange.getMinimum() == null)
-	 *         return false;
-	 *     Version minimum = versionRange.getMinimum();
-	 *     Version maximum = versionRange.getMaximum() == null ? Version.maxVersion : versionRange.getMaximum();
-	 *     if (!minimum.isInclusive() || maximum.isInclusive())
-	 *         return false;
-	 *     else if (minimum.getMajorComponent() == maximum.getMajorComponent() - 1)
-	 *         return false;
-	 *     else if (minimum.getMajorComponent() != maximum.getMajorComponent())
-	 *         return false;
-	 *     else if (minimum.getMinorComponent() == maximum.getMinorComponent() - 1)
-	 *         return true;
-	 *     return false;
-	 * </pre>
-	 */
-	public boolean isMatchedAsEquivalent();
-
-	/**
-	 * Indicates that this plug-in prerequisite can only be resolved
-	 * against a configured plug-in with a plug-in identifier that
-	 * is perfectly equal.
-	 *
-	 * @return <code>true</code> if only perfectly equal
-	 * identifier match satisfies this dependency,
-	 * <code>false</code> otherwise.
-	 * @since 2.0
-	 * @deprecated Callers of this method should interrogate the current {@link State}
-	 * of the platform.  For example, 
-	 * <pre>
-	 *     State state = Platform.getPlatformAdmin().getState();
-	 *     BundleDescription bundle = state.getBundle("my plug-in id", my plug-in version);
-	 *     BundleSpecification spec = bundle.getRequiredBundle("required plug-in id");
-	 *     VersionRange versionRange = spec.getVersionRange();
-	 *     if (versionRange == null || versionRange.getMinimum() == null)
-	 *         return false;
-	 *     Version minimum = versionRange.getMinimum();
-	 *     Version maximum = versionRange.getMaximum() == null ? Version.maxVersion : versionRange.getMaximum();
-	 *     if (minimum.equals(maximum))
-	 *         return true;
-	 *     return false;
-	 * </pre>
-	 */
-	public boolean isMatchedAsPerfect();
-
-	/**
-	 * Indicates that this plug-in prerequisite can only be resolved
-	 * against a configured plug-in with exactly the same plug-in 
-	 * identifier.
-	 *
-	 * @return <code>true</code> if only exact identifier match
-	 * satisfies this dependency, <code>false</code> if compatible
-	 * plug-in will satisfy this dependency.
-	 * @deprecated Callers of this method should interrogate the current {@link State}
-	 * of the platform.  For example, 
-	 * <pre>
-	 *     State state = Platform.getPlatformAdmin().getState();
-	 *     BundleDescription bundle = state.getBundle("my plug-in id", my plug-in version);
-	 *     BundleSpecification spec = bundle.getRequiredBundle("required plug-in id");
-	 *     VersionRange versionRange = spec.getVersionRange();
-	 *     if (versionRange == null || versionRange.getMinimum() == null)
-	 *         return false;
-	 *     Version minimum = versionRange.getMinimum();
-	 *     Version maximum = versionRange.getMaximum() == null ? Version.maxVersion : versionRange.getMaximum();
-	 *     if (!minimum.isInclusive() || maximum.isInclusive())
-	 *         return false;
-	 *     else if (minimum.getMajorComponent() == maximum.getMajorComponent() - 1)
-	 *         return false;
-	 *     else if (minimum.getMajorComponent() != maximum.getMajorComponent())
-	 *         return false;
-	 *     else if (minimum.getMinorComponent() == maximum.getMinorComponent() - 1)
-	 *         return true;
-	 *     return false;
-	 * </pre>
-	 */
-	public boolean isMatchedAsExact();
-
-	/**
-	 * Indicates whether this plug-in prerequisite is optional.  If a required (i.e., non-optional)
-	 * prerequisite is missing, this plugin is disabled.  
-	 *
-	 * @return <code>true</code> if this prerequisite is optional, <code>false</code> otherwise
-	 * @deprecated Given a manifest element equivalent of a plug-in 
-	 * prerequisite (see the class comment), this method is replaced by:
-	 * <pre>
-	 *     "true".equals(element.getAttribute(Constants.OPTIONAL_ATTRIBUTE);
-	 * </pre>
-	 */
-	public boolean isOptional();
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/IPluginRegistry.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/IPluginRegistry.java
deleted file mode 100644
index 953d9b0..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/IPluginRegistry.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-/**
- * The plug-in registry holds the master list of all
- * discovered plug-ins, extension points, and extensions.
- * <p>
- * The plug-in registry can be queried, by name, for 
- * plug-ins, extension points, and extensions.
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @deprecated 
- * The plug-in registry has been generalized in Eclipse 3.0.  It is now the
- * {@link IExtensionRegistry}.  Most of the <code>IPluginRegistry</code> function
- * is directly supported on the new interface without change.  Most clients
- * of <code>IPluginRegistry</code> need only to change their references to use
- * <code>IExtensionRegistry</code>.  The only exceptions are 
- * methods that return <code>IPluginDescriptor</code>s.  See the relevant method
- * comments for details.
- * <p>
- * This interface must only be used by plug-ins 
- * which explicitly require the org.eclipse.core.runtime.compatibility plug-in.
- * </p>
- */
-public interface IPluginRegistry {
-	/**
-	 * Returns all configuration elements from all extensions configured
-	 * into the identified extension point. Returns an empty array if the extension 
-	 * point does not exist, has no extensions configured, or none of the extensions 
-	 * contain configuration elements.
-	 *
-	 * @param extensionPointId the unique identifier of the extension point
-	 *		(e.g. <code>"org.eclipse.core.resources.builders"</code>)
-	 * @return the configuration elements
-	 * @deprecated Replaced by {@link IExtensionRegistry#getConfigurationElementsFor(String)}.
-	 */
-	public IConfigurationElement[] getConfigurationElementsFor(String extensionPointId);
-
-	/**
-	 * Returns all configuration elements from all extensions configured
-	 * into the identified extension point. Returns an empty array if the extension 
-	 * point does not exist, has no extensions configured, or none of the extensions 
-	 * contain configuration elements.
-	 *
-	 * @param pluginId the unique identifier of the plug-in 
-	 *		(e.g. <code>"org.eclipse.core.resources"</code>)
-	 * @param extensionPointName the simple identifier of the 
-	 *		extension point (e.g. <code>"builders"</code>)
-	 * @return the configuration elements
-	 * @deprecated Replaced by {@link IExtensionRegistry#getConfigurationElementsFor(String, String)}.
-	 */
-	public IConfigurationElement[] getConfigurationElementsFor(String pluginId, String extensionPointName);
-
-	/**
-	 * Returns all configuration elements from the identified extension.
-	 * Returns an empty array if the extension does not exist or 
-	 * contains no configuration elements.
-	 *
-	 * @param pluginId the unique identifier of the plug-in 
-	 *		(e.g. <code>"org.eclipse.core.resources"</code>)
-	 * @param extensionPointName the simple identifier of the 
-	 *		extension point (e.g. <code>"builders"</code>)
-	 * @param extensionId the unique identifier of the extension 
-	 *		(e.g. <code>"com.example.acme.coolbuilder</code>)
-	 * @return the configuration elements
-	 * @deprecated Replaced by {@link IExtensionRegistry#getConfigurationElementsFor(String, String, String)}.
-	 */
-	public IConfigurationElement[] getConfigurationElementsFor(String pluginId, String extensionPointName, String extensionId);
-
-	/**
-	 * Returns the specified extension in this plug-in registry, 
-	 * or <code>null</code> if there is no such extension.
-	 * The first parameter identifies the extension point, and the second
-	 * parameter identifies an extension plugged in to that extension point.
-	 *
-	 * @param extensionPointId the unique identifier of the extension point
-	 *		(e.g. <code>"org.eclipse.core.resources.builders"</code>)
-	 * @param extensionId the unique identifier of the extension 
-	 *		(e.g. <code>"com.example.acme.coolbuilder"</code>)
-	 * @return the extension, or <code>null</code>
-	 * @deprecated Replaced by {@link IExtensionRegistry#getExtension(String, String)}.
-	 */
-	public IExtension getExtension(String extensionPointId, String extensionId);
-
-	/**
-	 * Returns the specified extension in this plug-in registry, 
-	 * or <code>null</code> if there is no such extension.
-	 * The first two parameters identify the extension point, and the third
-	 * parameter identifies an extension plugged in to that extension point.
-	 *
-	 * @param pluginId the unique identifier of the plug-in 
-	 *		(e.g. <code>"org.eclipse.core.resources"</code>)
-	 * @param extensionPointName the simple identifier of the 
-	 *		extension point (e.g. <code>"builders"</code>)
-	 * @param extensionId the unique identifier of the extension 
-	 *		(e.g. <code>"com.example.acme.coolbuilder"</code>)
-	 * @return the extension, or <code>null</code>
-	 * @deprecated Replaced by {@link IExtensionRegistry#getExtension(String, String, String)}.
-	 */
-	public IExtension getExtension(String pluginId, String extensionPointName, String extensionId);
-
-	/**
-	 * Returns the extension point with the given extension point identifier
-	 * in this plug-in registry, or <code>null</code> if there is no such
-	 * extension point.
-	 *
-	 * @param extensionPointId the unique identifier of the extension point 
-	 *    (e.g., <code>"org.eclipse.core.resources.builders"</code>)
-	 * @return the extension point, or <code>null</code>
-	 * @deprecated Replaced by {@link IExtensionRegistry#getExtensionPoint(String)}.
-	 */
-	public IExtensionPoint getExtensionPoint(String extensionPointId);
-
-	/**
-	 * Returns the extension point in this plug-in registry
-	 * with the given plug-in identifier and extension point simple identifier,
-	 * or <code>null</code> if there is no such extension point.
-	 *
-	 * @param pluginId the unique identifier of the plug-in 
-	 *		(e.g. <code>"org.eclipse.core.resources"</code>)
-	 * @param extensionPointName the simple identifier of the 
-	 *		extension point (e.g. <code>" builders"</code>)
-	 * @return the extension point, or <code>null</code>
-	 * @deprecated Replaced by {@link IExtensionRegistry#getExtensionPoint(String, String)}.
-	 */
-	public IExtensionPoint getExtensionPoint(String pluginId, String extensionPointName);
-
-	/**
-	 * Returns all extension points known to this plug-in registry.
-	 * Returns an empty array if there are no extension points.
-	 *
-	 * @return the extension points known to this plug-in registry
-	 * @deprecated Replaced by {@link IExtensionRegistry#getExtensionPoints()}.
-	 */
-	public IExtensionPoint[] getExtensionPoints();
-
-	/**
-	 * Returns the plug-in descriptor with the given plug-in identifier
-	 * in this plug-in registry, or <code>null</code> if there is no such
-	 * plug-in.  If there are multiple versions of the identified plug-in,
-	 * one will be non-deterministically chosen and returned.  
-	 *
-	 * @param pluginId the unique identifier of the plug-in 
-	 *		(e.g. <code>"com.example.acme"</code>).
-	 * @return the plug-in descriptor, or <code>null</code>
-	 * @deprecated 
-	 * <code>IPluginDescriptor</code> was refactored in Eclipse 3.0.
-	 * The <code>getPluginDescriptor()</code> method may only be called by plug-ins 
-	 * which explicitly require the org.eclipse.core.runtime.compatibility plug-in.
-	 * See the comments on {@link IPluginDescriptor} and its methods for details.
-	 */
-	public IPluginDescriptor getPluginDescriptor(String pluginId);
-
-	/**
-	 * Returns the plug-in descriptor with the given plug-in identifier
-	 * and version in this plug-in registry, or <code>null</code> if 
-	 * there is no such plug-in.
-	 *
-	 * @param pluginId the unique identifier of the plug-in 
-	 *		(e.g. <code>"org.eclipse.core.resources"</code>)
-	 * @param version plug-in version identifier. If <code>null</code> is specified,
-	 * a non-deterministically chosen version of the identified plug-in (if any)
-	 * will be returned
-	 * @return the plug-in descriptor, or <code>null</code>
-	 * @deprecated 
-	 * <code>IPluginDescriptor</code> was refactored in Eclipse 3.0.
-	 * The <code>getPluginDescriptor()</code> method may only be called by plug-ins 
-	 * which explicitly require the org.eclipse.core.runtime.compatibility plug-in.
-	 * See the comments on {@link IPluginDescriptor} and its methods for details.
-	 */
-	public IPluginDescriptor getPluginDescriptor(String pluginId, PluginVersionIdentifier version);
-
-	/**
-	 * Returns all plug-in descriptors known to this plug-in registry.
-	 * Returns an empty array if there are no installed plug-ins.
-	 *
-	 * @return the plug-in descriptors known to this plug-in registry
-	 * @deprecated 
-	 * <code>IPluginDescriptor</code> was refactored in Eclipse 3.0.
-	 * The <code>getPluginDescriptors()</code> method may only be called by plug-ins 
-	 * which explicitly require the org.eclipse.core.runtime.compatibility plug-in.
-	 * See the comments on {@link IPluginDescriptor} and its methods for details.
-	 */
-	public IPluginDescriptor[] getPluginDescriptors();
-
-	/**
-	 * Returns all versions of the identified plug-in descriptor
-	 * known to this plug-in registry.
-	 * Returns an empty array if there are no plug-ins
-	 * with the specified identifier.
-	 *
-	 * @param pluginId the unique identifier of the plug-in 
-	 *		(e.g. <code>"org.eclipse.core.resources"</code>).
-	 * @return the plug-in descriptors known to this plug-in registry
-	 * @deprecated 
-	 * <code>IPluginDescriptor</code> was refactored in Eclipse 3.0.
-	 * The <code>getPluginDescriptors()</code> method may only be called by plug-ins 
-	 * which explicitly require the org.eclipse.core.runtime.compatibility plug-in.
-	 * See the comments on {@link IPluginDescriptor} and its methods for details.
-	 */
-	public IPluginDescriptor[] getPluginDescriptors(String pluginId);
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/IProduct.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/IProduct.java
deleted file mode 100644
index d03417e..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/IProduct.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-import org.osgi.framework.Bundle;
-
-/**
- * Products are the Eclipse unit of branding.  From the runtime point of view they have
- * a name, id and description and identify the Eclipse application to run.  
- * <p>
- * Since the bulk of the branding related information is
- * specific to the UI, products also carry an arbitrary set of properties.  The valid set of 
- * key-value pairs and their interpretation defined by the UI of the target environment.
- * For example, in the standard Eclipse UI, <code>org.eclipse.ui.branding.IProductConstants</code>
- * the properties of interest to the UI.  Other clients may specify additional properties.
- * </p><p>
- * Products can be defined directly using extensions to the <code>org.eclipse.core.runtime.products</code>
- * extension point or by using facilities provided by IProductProvider implementations.
- * </p><p>
- * For readers familiar with Eclipse 2.1 and earlier, products are roughly equivalent to 
- * <i>primary features</i>. 
- * </p>
- * 
- * @see IProductProvider
- * @see org.eclipse.ui.branding.IProductConstants
- * @since 3.0
- */
-public interface IProduct {
-	/**
-	 * Returns the application associated with this product.  This information is used 
-	 * to guide the runtime as to what application extension to create and execute.
-	 * 
-	 * @return this product's application or <code>null</code> if none
-	 */
-	public String getApplication();
-
-	/**
-	 * Returns the name of this product.  The name is typically used in the title
-	 * bar of UI windows.
-	 * 
-	 * @return the name of this product or <code>null</code> if none
-	 */
-	public String getName();
-
-	/**
-	 * Returns the text description of this product
-	 * 
-	 * @return the description of this product or <code>null</code> if none
-	 */
-	public String getDescription();
-
-	/** Returns the unique product id of this product.
-	 * 
-	 * @return the id of this product
-	 */
-	public String getId();
-
-	/**
-	 * Returns the property of this product with the given key.
-	 * <code>null</code> is returned if there is no such key/value pair.
-	 * 
-	 * @param key the name of the property to return
-	 * @return the value associated with the given key or <code>null</code> if none
-	 */
-	public String getProperty(String key);
-	
-	/**
-	 * Returns the bundle which is responsible for the definition of this product.
-	 * Typically this is used as a base for searching for images and other files 
-	 * that are needed in presenting the product.
-	 * 
-	 * @return the bundle which defines this product or <code>null</code> if none
-	 */
-	public Bundle getDefiningBundle();
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/IProductProvider.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/IProductProvider.java
deleted file mode 100644
index 72a0ab4..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/IProductProvider.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-/**
- * Product providers define products (units of branding) which have been installed in
- * the current system.  Typically, a configuration agent (i.e., plug-in installer) will 
- * define a product provider so that it can report to the system the products it has installed.
- * <p>
- * Products are normally defined and installed in the system using extensions to the 
- * <code>org.eclipse.core.runtime.products</code> extension point.  In cases where 
- * the notion of product is defined by alternate means (e.g., primary feature), an <code>IProductProvider</code>
- * can be installed in this extension point using an executable extension.  The provider
- * then acts as a proxy for the product extensions that represent the products installed.
- * </p>
- * 
- * @see IProduct
- * @since 3.0
- */
-public interface IProductProvider {
-	/**
-	 * Returns the human-readable name of this product provider.
-	 * 
-	 * @return the name of this product provider
-	 */
-	public String getName();
-
-	/**
-	 * Returns the products provided by this provider.
-	 * 
-	 * @return the products provided by this provider
-	 */
-	public IProduct[] getProducts();
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/PerformanceStats.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/PerformanceStats.java
deleted file mode 100644
index 76dada2..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/PerformanceStats.java
+++ /dev/null
@@ -1,535 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-import java.io.PrintWriter;
-import java.util.*;
-import org.eclipse.core.internal.runtime.InternalPlatform;
-import org.eclipse.core.internal.runtime.PerformanceStatsProcessor;
-
-/**
- * PerformanceStats collects and aggregates timing data about events such as
- * a builder running, an editor opening, etc.  This data is collected for the 
- * purpose of performance analysis, and is not intended to be used as
- * a generic event tracking and notification system.
- * <p>
- * Each performance event can have an associated maximum acceptable
- * duration that is specified in the platform debug options file (.options).
- * Events that take longer than this maximum are logged as errors.  Along
- * with option file entries for each debug event, there are some global debug
- * options for enabling or disabling performance event gathering and reporting.
- * See the "org.eclipse.core.runtime/perf*" debug options in the .options file
- * for the org.eclipse.core.runtime plugin for more details.
- * </p><p>
- * A performance event can optionally have additional context information
- * ({@link #getContext}).  This information is only stored in the case
- * of a performance failure, and can be used to provide further diagnostic 
- * information that can help track down the cause of the failure.
- * </p><p>
- * Performance events and performance failures are batched up and periodically
- * sent to interested performance event listeners.
- * </p><p>
- * This class is not intended to be subclassed or instantiated by clients.
- * </p>
- * @since 3.1
- */
-public class PerformanceStats {
-	/**
-	 * A performance listener is periodically notified after performance events occur 
-	 * or after events fail.
-	 * <p>
-	 * This class is intended to be subclassed.
-	 * </p>
-	 * 
-	 * @see PerformanceStats#addListener(PerformanceStats.PerformanceListener)
-	 */
-	public static abstract class PerformanceListener {
-		/**
-		 * Creates a new listener.
-		 */
-		protected PerformanceListener() {
-			super();
-		}
-
-		/**
-		 * Notifies than an event exceeded the maximum duration for that event type.
-		 * <p>
-		 * This default implementation does nothing. Subclasses may override.
-		 * </p>
-		 * 
-		 * @param event The event that failed
-		 * @param duration The duration of the failed event, in milliseconds
-		 */
-		public void eventFailed(PerformanceStats event, long duration) {
-			//default implementation does nothing
-		}
-
-		/**
-		 * Notifies that an event occurred.  Notification might not occur
-		 * in the same thread or near the time of the actual event.
-		 * <p>
-		 * This default implementation does nothing. Subclasses may override.
-		 * </p>
-		 * 
-		 * @param event The event that occurred
-		 */
-		public void eventsOccurred(PerformanceStats[] event) {
-			//default implementation does nothing
-		}
-	}
-
-	/**
-	 * An empty stats object that is returned when tracing is turned off
-	 */
-	private static final PerformanceStats EMPTY_STATS = new PerformanceStats("", ""); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * Constant indicating whether or not tracing is enabled
-	 */
-	public static final boolean ENABLED;
-
-	/**
-	 * A constant indicating that the timer has not been started.
-	 */
-	private static final long NOT_STARTED = -1;
-
-	/**
-	 * All known event statistics.
-	 */
-	private final static Map statMap = Collections.synchronizedMap(new HashMap());
-
-	/**
-	 * Maximum allowed durations for each event.
-	 * Maps String (event name) -> Long (threshold)
-	 */
-	private final static Map thresholdMap = Collections.synchronizedMap(new HashMap());
-
-	/**
-	 * Whether non-failure statistics should be retained.
-	 */
-	private static final boolean TRACE_SUCCESS;
-
-	/**
-	 * An identifier that can be used to figure out who caused the event. This is 
-	 * typically a string representation of the object whose code was running when 
-	 * the event occurred or a <code>String</code> describing the event.
-	 */
-	private String blame;
-
-	/**
-	 * The id of the plugin that defined the blame object for this event, or
-	 * <code>null</code> if it could not be determined.
-	 */
-	private String blamePluginId;
-
-	/**
-	 * An optional context for the event (may be <code>null</code>).
-	 * The context can provide extra information about an event, such as the
-	 * name of a project being built, or the input of an editor being opened.
-	 */
-	private String context;
-
-	/**
-	 * The starting time of the current occurrence of this event.
-	 */
-	private long currentStart = NOT_STARTED;
-
-	/**
-	 * The symbolic name of the event that occurred. This is usually the name of 
-	 * the debug option for this event.
-	 */
-	private String event;
-
-	/**
-	 * Whether this is a performance failure event
-	 */
-	private boolean isFailure;
-
-	/**
-	 * The total number of times this event has occurred.
-	 */
-	private int runCount = 0;
-
-	/**
-	 * The total time in milliseconds taken by all occurrences of this event.
-	 */
-	private long runningTime = 0;
-
-	static {
-		ENABLED = InternalPlatform.getDefault().getBooleanOption(Platform.PI_RUNTIME + "/perf", false);//$NON-NLS-1$
-		//turn these on by default if the global trace flag is turned on
-		TRACE_SUCCESS = InternalPlatform.getDefault().getBooleanOption(Platform.PI_RUNTIME + "/perf/success", ENABLED); //$NON-NLS-1$
-	}
-
-	/**
-	 * Adds a listener that is notified when performance events occur.  If
-	 * an equal listener is already installed, it will be replaced.
-	 * 
-	 * @param listener The listener to be added
-	 * @see #removeListener(PerformanceStats.PerformanceListener)
-	 */
-	public static void addListener(PerformanceListener listener) {
-		if (ENABLED)
-			PerformanceStatsProcessor.addListener(listener);
-	}
-
-	/**
-	 * Discards all known performance event statistics.
-	 */
-	public static void clear() {
-		statMap.clear();
-	}
-
-	/**
-	 * Returns all performance event statistics.
-	 * 
-	 * @return An array of known performance event statistics.  The array
-	 * will be empty if there are no recorded statistics.
-	 */
-	public static PerformanceStats[] getAllStats() {
-		return (PerformanceStats[]) statMap.values().toArray(new PerformanceStats[statMap.values().size()]);
-	}
-
-	/**
-	 * Returns the stats object corresponding to the given parameters.  
-	 * A stats object is created and added to the global list of events if it did not 
-	 * already exist.
-	 * 
-	 * @param eventName A symbolic event name.  This is usually the name of 
-	 * the debug option for this event. An example event name from
-	 * the org.eclipse.core.resources plugin describing a build event might look like:
-	 * 		<code>"org.eclipse.core.resources/perf/building"</code>"
-	 * @param blameObject The blame for the event.  This is typically the object 
-	 * whose code was running when the event occurred.  If a blame object cannot 
-	 * be obtained, a <code>String</code> describing the event should be supplied
-	 */
-	public static PerformanceStats getStats(String eventName, Object blameObject) {
-		if (!ENABLED || eventName == null || blameObject == null)
-			return EMPTY_STATS;
-		PerformanceStats newStats = new PerformanceStats(eventName, blameObject);
-		if (!TRACE_SUCCESS)
-			return newStats;
-		//use existing stats object if available
-		PerformanceStats oldStats = (PerformanceStats) statMap.get(newStats);
-		if (oldStats != null)
-			return oldStats;
-		statMap.put(newStats, newStats);
-		return newStats;
-	}
-
-	/**
-	 * Returns whether monitoring of a given performance event is enabled.
-	 * <p>
-	 * For frequent performance events, the result of this method call should
-	 * be cached by the caller to minimize overhead when performance monitoring
-	 * is turned off.  It is not possible for enablement to change during the life
-	 * of this invocation of the platform.
-	 * </p>
-	 * 
-	 * @param eventName The name of the event to determine enablement for
-	 * @return <code>true</code>If the performance event with the given
-	 * name is enabled, and <code>false</code> otherwise.
-	 */
-	public static boolean isEnabled(String eventName) {
-		if (!ENABLED)
-			return false;
-		String option = Platform.getDebugOption(eventName);
-		return option != null && !option.equalsIgnoreCase("false") && !option.equalsIgnoreCase("-1"); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	/**
-	 * Prints all statistics to the standard output.
-	 */
-	public static void printStats() {
-		if (!ENABLED)
-			return;
-		PrintWriter writer = new PrintWriter(System.out);
-		PerformanceStatsProcessor.printStats(writer);
-		writer.flush();
-		writer.close();
-	}
-
-	/**
-	 * Writes all statistics using the provided writer
-	 * 
-	 * @param out The writer to print stats to.
-	 */
-	public static void printStats(PrintWriter out) {
-		if (!ENABLED)
-			return;
-		PerformanceStatsProcessor.printStats(out);
-	}
-
-	/**
-	 * Removes an event listener. Has no effect if an equal
-	 * listener object is not currently registered.
-	 * 
-	 * @param listener The listener to remove
-	 * @see #addListener(PerformanceStats.PerformanceListener)
-	 */
-	public static void removeListener(PerformanceListener listener) {
-		if (ENABLED)
-			PerformanceStatsProcessor.removeListener(listener);
-	}
-
-	/**
-	 * Removes statistics for a given event and blame
-	 * 
-	 * @param eventName The name of the event to remove
-	 * @param blameObject The blame for the event to remove
-	 */
-	public static void removeStats(String eventName, Object blameObject) {
-		synchronized (statMap) {
-			for (Iterator it = statMap.keySet().iterator(); it.hasNext();) {
-				PerformanceStats stats = (PerformanceStats) it.next();
-				if (stats.getEvent().equals(eventName) && stats.getBlame().equals(blameObject))
-					it.remove();
-			}
-		}
-	}
-
-	/** 
-	 * Creates a new PerformanceStats object.  Private to prevent client instantiation.
-	 */
-	private PerformanceStats(String event, Object blame) {
-		this(event, blame, null);
-	}
-
-	/** 
-	 * Creates a new PerformanceStats object.  Private to prevent client instantiation.
-	 */
-	private PerformanceStats(String event, Object blameObject, String context) {
-		this.event = event;
-		this.blame = blameObject instanceof String ? (String) blameObject : blameObject.getClass().getName();
-		this.blamePluginId = InternalPlatform.getDefault().getBundleId(blameObject);
-		this.context = context;
-	}
-
-	/**
-	 * Adds an occurrence of this event to the cumulative counters. This method
-	 * can be used as an alternative to <code>startRun</code> and <code>endRun</code>
-	 * for clients that want to track the context and execution time separately.
-	 * 
-	 * @param elapsed The elapsed time of the new occurrence in milliseconds
-	 * @param contextName The context for the event to return, or <code>null</code>.
-	 * The context optionally provides extra information about an event, such as the
-	 * name of a project being built, or the input of an editor being opened.
-	 */
-	public void addRun(long elapsed, String contextName) {
-		if (!ENABLED)
-			return;
-		runCount++;
-		runningTime += elapsed;
-		if (elapsed > getThreshold(event))
-			PerformanceStatsProcessor.failed(createFailureStats(contextName, elapsed), blamePluginId, elapsed);
-		if (TRACE_SUCCESS)
-			PerformanceStatsProcessor.changed(this);
-	}
-
-	/**
-	 * Creates a stats object representing a performance failure
-	 * 
-	 * @param contextName The failure context information.
-	 * @param elapsed The elapsed time in milliseconds
-	 * @return The failure stats
-	 */
-	private PerformanceStats createFailureStats(String contextName, long elapsed) {
-		PerformanceStats failedStat = new PerformanceStats(event, blame, contextName);
-		PerformanceStats old = (PerformanceStats) statMap.get(failedStat);
-		if (old == null)
-			statMap.put(failedStat, failedStat);
-		else
-			failedStat = old;
-		failedStat.isFailure = true;
-		failedStat.runCount++;
-		failedStat.runningTime += elapsed;
-		return failedStat;
-	}
-
-	/**
-	 * Stops timing the occurrence of this event that was started by the previous
-	 * call to <code>startRun</code>.  The event is automatically added to
-	 * the cumulative counters for this event and listeners are notified.
-	 * <p>
-	 * Note that this facility guards itself against runs that start but fail to stop,
-	 * so it is not necessary to call this method from a finally block.  Tracking
-	 * performance of failure cases is generally not of interest.
-	 * </p>
-	 * 
-	 * @see #startRun()
-	 */
-	public void endRun() {
-		if (!ENABLED || currentStart == NOT_STARTED)
-			return;
-		addRun(System.currentTimeMillis() - currentStart, context);
-		currentStart = NOT_STARTED;
-	}
-
-	/* (non-Javadoc)
-	 * @see java.lang.Object#equals()
-	 */
-	public boolean equals(Object obj) {
-		//count and time are not considered part of equality
-		if (!(obj instanceof PerformanceStats))
-			return false;
-		PerformanceStats that = (PerformanceStats) obj;
-		if (!this.event.equals(that.event))
-			return false;
-		if (!this.getBlameString().equals(that.getBlameString()))
-			return false;
-		return this.context == null ? that.context == null : this.context.equals(that.context);
-	}
-
-	/**
-	 * Returns an object that can be used to figure out who caused the event,
-	 * or a string describing the cause of the event.
-	 * 
-	 * @return The blame for this event
-	 */
-	public Object getBlame() {
-		return blame;
-	}
-
-	/**
-	 * Returns a string describing the blame for this event.
-	 * 
-	 * @return A string describing the blame.
-	 */
-	public String getBlameString() {
-		return blame;
-	}
-
-	/**
-	 * Returns the optional event context, such as the input of an editor, or the target project
-	 * of a build event.
-	 * 
-	 * @return The context, or <code>null</code> if there is none
-	 */
-	public String getContext() {
-		return context;
-	}
-
-	/**
-	 * Returns the symbolic name of the event that occurred.
-	 * 
-	 * @return The name of the event.
-	 */
-	public String getEvent() {
-		return event;
-	}
-
-	/**
-	 * Returns the total number of times this event has occurred.
-	 * 
-	 * @return The number of occurrences of this event.
-	 */
-	public int getRunCount() {
-		return runCount;
-	}
-
-	/**
-	 * Returns the total execution time in milliseconds for all occurrences
-	 * of this event.
-	 * 
-	 * @return The total running time in milliseconds.
-	 */
-	public long getRunningTime() {
-		return runningTime;
-	}
-
-	/**
-	 * Returns the performance threshold for this event.
-	 */
-	private long getThreshold(String eventName) {
-		Long value = (Long) thresholdMap.get(eventName);
-		if (value == null) {
-			String option = InternalPlatform.getDefault().getOption(eventName);
-			if (option != null) {
-				try {
-					value = new Long(option);
-				} catch (NumberFormatException e) {
-					//invalid option, just ignore
-				}
-			}
-			if (value == null)
-				value = new Long(Long.MAX_VALUE);
-			thresholdMap.put(eventName, value);
-		}
-		return value.longValue();
-	}
-
-	public int hashCode() {
-		//count and time are not considered part of equality
-		int hash = event.hashCode() * 37 + getBlameString().hashCode();
-		if (context != null)
-			hash = hash * 37 + context.hashCode();
-		return hash;
-	}
-
-	/**
-	 * Returns whether this performance event represents a performance failure.
-	 * 
-	 * @return <code>true</code> if this is a performance failure, and 
-	 * <code>false</code> otherwise.
-	 */
-	public boolean isFailure() {
-		return isFailure;
-	}
-
-	/**
-	 * Resets count and running time for this particular stats event.
-	 */
-	public void reset() {
-		runningTime = 0;
-		runCount = 0;
-	}
-
-	/**
-	 * Starts timing an occurrence of this event. This is a convenience method,
-	 * fully equivalent to <code>startRun(null)</code>.
-	 */
-	public void startRun() {
-		if (ENABLED)
-			startRun(null);
-	}
-
-	/**
-	 * Starts timing an occurrence of this event.  The event should be stopped
-	 * by a subsequent call to <code>endRun</code>.
-	 * 
-	 * @param contextName The context for the event to return, or <code>null</code>.
-	 * The context optionally provides extra information about an event, such as the
-	 * name of a project being built, or the input of an editor being opened.
-	 * @see #endRun
-	 */
-	public void startRun(String contextName) {
-		if (!ENABLED)
-			return;
-		this.context = contextName;
-		this.currentStart = System.currentTimeMillis();
-	}
-
-	/**
-	 * For debugging purposes only.
-	 */
-	public String toString() {
-		StringBuffer result = new StringBuffer("PerformanceStats("); //$NON-NLS-1$
-		result.append(event);
-		result.append(',');
-		result.append(blame);
-		if (context != null) {
-			result.append(',');
-			result.append(context);
-		}
-		result.append(')');
-		return result.toString();
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/Platform.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/Platform.java
deleted file mode 100644
index 2f0cae7..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/Platform.java
+++ /dev/null
@@ -1,1494 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-import java.io.IOException;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.util.*;
-import org.eclipse.core.internal.runtime.*;
-import org.eclipse.core.runtime.content.IContentTypeManager;
-import org.eclipse.core.runtime.jobs.IJobManager;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.core.runtime.preferences.IPreferencesService;
-import org.eclipse.osgi.service.datalocation.Location;
-import org.eclipse.osgi.service.debug.DebugOptions;
-import org.eclipse.osgi.service.environment.EnvironmentInfo;
-import org.eclipse.osgi.service.resolver.PlatformAdmin;
-import org.osgi.framework.Bundle;
-import org.osgi.service.packageadmin.PackageAdmin;
-
-/**
- * The central class of the Eclipse Platform Runtime. This class cannot
- * be instantiated or subclassed by clients; all functionality is provided 
- * by static methods.  Features include:
- * <ul>
- * <li>the platform registry of installed plug-ins</li>
- * <li>the platform adapter manager</li>
- * <li>the platform log</li>
- * <li>the authorization info management</li>
- * </ul>
- */
-public final class Platform {
-
-	/**
-	 * The unique identifier constant (value "<code>org.eclipse.core.runtime</code>")
-	 * of the Core Runtime (pseudo-) plug-in.
-	 */
-	public static final String PI_RUNTIME = "org.eclipse.core.runtime"; //$NON-NLS-1$
-
-	/** 
-	 * The simple identifier constant (value "<code>applications</code>") of
-	 * the extension point of the Core Runtime plug-in where plug-ins declare
-	 * the existence of runnable applications. A plug-in may define any
-	 * number of applications; however, the platform is only capable
-	 * of running one application at a time.
-	 * 
-	 */
-	public static final String PT_APPLICATIONS = "applications"; //$NON-NLS-1$
-
-	/** 
-	 * The simple identifier constant (value "<code>adapters</code>") of
-	 * the extension point of the Core Runtime plug-in where plug-ins declare
-	 * the existence of adapter factories. A plug-in may define any
-	 * number of adapters.
-	 * 
-	 * @see IAdapterManager#hasAdapter(Object, String)
-	 * @since 3.0
-	 */
-	public static final String PT_ADAPTERS = "adapters"; //$NON-NLS-1$
-
-	/** 
-	 * The simple identifier constant (value "<code>preferences</code>") of
-	 * the extension point of the Core Runtime plug-in where plug-ins declare
-	 * extensions to the preference facility. A plug-in may define any number
-	 * of preference extensions.
-	 * 
-	 * @see #getPreferencesService()
-	 * @since 3.0
-	 */
-	public static final String PT_PREFERENCES = Preferences.PT_PREFERENCES;
-
-	/** 
-	 * The simple identifier constant (value "<code>products</code>") of
-	 * the extension point of the Core Runtime plug-in where plug-ins declare
-	 * the existence of a product. A plug-in may define any
-	 * number of products; however, the platform is only capable
-	 * of running one product at a time.
-	 * 
-	 * @see #getProduct()
-	 * @since 3.0
-	 */
-	public static final String PT_PRODUCT = "products"; //$NON-NLS-1$
-
-	/** 
-	 * Debug option value denoting the time at which the platform runtime
-	 * was started.  This constant can be used in conjunction with
-	 * <code>getDebugOption</code> to find the string value of
-	 * <code>System.currentTimeMillis()</code> when the platform was started.
-	 */
-	public static final String OPTION_STARTTIME = PI_RUNTIME + "/starttime"; //$NON-NLS-1$
-
-	/**
-	 * Name of a preference for configuring the performance level for this system.
-	 *
-	 * <p>
-	 * This value can be used by all components to customize features to suit the 
-	 * speed of the user's machine.  The platform job manager uses this value to make
-	 * scheduling decisions about background jobs.
-	 * </p>
-	 * <p>
-	 * The preference value must be an integer between the constant values
-	 * MIN_PERFORMANCE and MAX_PERFORMANCE
-	 * </p>
-	 * @see #MIN_PERFORMANCE
-	 * @see #MAX_PERFORMANCE
-	 * @since 3.0
-	 */
-	public static final String PREF_PLATFORM_PERFORMANCE = "runtime.performance"; //$NON-NLS-1$
-
-	/**
-	 * Constant (value "line.separator") name of the preference used for storing 
-	 * the line separator. 
-	 * 
-	 * @see #knownPlatformLineSeparators
-	 * @since 3.1
-	 */
-	public static final String PREF_LINE_SEPARATOR = "line.separator"; //$NON-NLS-1$
-
-	/** 
-	 * Constant (value 1) indicating the minimum allowed value for the 
-	 * <code>PREF_PLATFORM_PERFORMANCE</code> preference setting.
-	 * @since 3.0
-	 */
-	public static final int MIN_PERFORMANCE = 1;
-
-	/** 
-	 * Constant (value 5) indicating the maximum allowed value for the 
-	 * <code>PREF_PLATFORM_PERFORMANCE</code> preference setting.
-	 * @since 3.0
-	 */
-	public static final int MAX_PERFORMANCE = 5;
-
-	/** 
-	 * Status code constant (value 1) indicating a problem in a plug-in
-	 * manifest (<code>plugin.xml</code>) file.
-	 */
-	public static final int PARSE_PROBLEM = 1;
-
-	/**
-	 * Status code constant (value 2) indicating an error occurred while running a plug-in.
-	 */
-	public static final int PLUGIN_ERROR = 2;
-
-	/**
-	 * Status code constant (value 3) indicating an error internal to the
-	 * platform has occurred.
-	 */
-	public static final int INTERNAL_ERROR = 3;
-
-	/**
-	 * Status code constant (value 4) indicating the platform could not read
-	 * some of its metadata.
-	 */
-	public static final int FAILED_READ_METADATA = 4;
-
-	/**
-	 * Status code constant (value 5) indicating the platform could not write
-	 * some of its metadata.
-	 */
-	public static final int FAILED_WRITE_METADATA = 5;
-
-	/**
-	 * Status code constant (value 6) indicating the platform could not delete
-	 * some of its metadata.
-	 */
-	public static final int FAILED_DELETE_METADATA = 6;
-
-	/**
-	 * Constant string (value "win32") indicating the platform is running on a
-	 * Window 32-bit operating system (e.g., Windows 98, NT, 2000).
-	 * <p>
-	 * Note this constant has been moved from the deprecated 
-	 * org.eclipse.core.boot.BootLoader class and its value has not changed.
-	 * </p>
-	 * @since 3.0
-	 */
-	public static final String OS_WIN32 = "win32";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "linux") indicating the platform is running on a
-	 * Linux-based operating system.
-	 * <p>
-	 * Note this constant has been moved from the deprecated 
-	 * org.eclipse.core.boot.BootLoader class and its value has not changed.
-	 * </p>
-	 * @since 3.0
-	 */
-	public static final String OS_LINUX = "linux";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "aix") indicating the platform is running on an
-	 * AIX-based operating system.
-	 * <p>
-	 * Note this constant has been moved from the deprecated 
-	 * org.eclipse.core.boot.BootLoader class and its value has not changed.
-	 * </p>
-	 * @since 3.0
-	 */
-	public static final String OS_AIX = "aix";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "solaris") indicating the platform is running on a
-	 * Solaris-based operating system.
-	 * <p>
-	 * Note this constant has been moved from the deprecated 
-	 * org.eclipse.core.boot.BootLoader class and its value has not changed.
-	 * </p>
-	 * @since 3.0
-	 */
-	public static final String OS_SOLARIS = "solaris";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "hpux") indicating the platform is running on an
-	 * HP/UX-based operating system.
-	 * <p>
-	 * Note this constant has been moved from the deprecated 
-	 * org.eclipse.core.boot.BootLoader class and its value has not changed.
-	 * </p>
-	 * @since 3.0
-	 */
-	public static final String OS_HPUX = "hpux";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "qnx") indicating the platform is running on a
-	 * QNX-based operating system.
-	 * <p>
-	 * Note this constant has been moved from the deprecated 
-	 * org.eclipse.core.boot.BootLoader class and its value has not changed.
-	 * </p>
-	 * @since 3.0
-	 */
-	public static final String OS_QNX = "qnx";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "macosx") indicating the platform is running on a
-	 * Mac OS X operating system.
-	 * <p>
-	 * Note this constant has been moved from the deprecated 
-	 * org.eclipse.core.boot.BootLoader class and its value has not changed.
-	 * </p>
-	 * @since 3.0
-	 */
-	public static final String OS_MACOSX = "macosx";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "unknown") indicating the platform is running on a
-	 * machine running an unknown operating system.
-	 * <p>
-	 * Note this constant has been moved from the deprecated 
-	 * org.eclipse.core.boot.BootLoader class and its value has not changed.
-	 * </p>
-	 * @since 3.0
-	 */
-	public static final String OS_UNKNOWN = "unknown";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "x86") indicating the platform is running on an
-	 * x86-based architecture.
-	 * <p>
-	 * Note this constant has been moved from the deprecated 
-	 * org.eclipse.core.boot.BootLoader class and its value has not changed.
-	 * </p>
-	 * @since 3.0
-	 */
-	public static final String ARCH_X86 = "x86";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "PA_RISC") indicating the platform is running on an
-	 * PA_RISC-based architecture.
-	 * <p>
-	 * Note this constant has been moved from the deprecated 
-	 * org.eclipse.core.boot.BootLoader class and its value has not changed.
-	 * </p>
-	 * @since 3.0
-	 */
-	public static final String ARCH_PA_RISC = "PA_RISC";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "ppc") indicating the platform is running on an
-	 * PowerPC-based architecture.
-	 * <p>
-	 * Note this constant has been moved from the deprecated 
-	 * org.eclipse.core.boot.BootLoader class and its value has not changed.
-	 * </p>
-	 * @since 3.0
-	 */
-	public static final String ARCH_PPC = "ppc";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "sparc") indicating the platform is running on an
-	 * Sparc-based architecture.
-	 * <p>
-	 * Note this constant has been moved from the deprecated 
-	 * org.eclipse.core.boot.BootLoader class and its value has not changed.
-	 * </p>
-	 * @since 3.0
-	 */
-	public static final String ARCH_SPARC = "sparc";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "x86_64") indicating the platform is running on an
-	 * x86 64bit-based architecture.
-	 * 
-	 * @since 3.1
-	 */
-	public static final String ARCH_X86_64 = "x86_64";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "amd64") indicating the platform is running on an
-	 * AMD64-based architecture.
-	 * 
-	 * @since 3.0
-	 * @deprecated use <code>ARCH_X86_64</code> instead. Note the values
-	 * has been changed to be the value of the <code>ARCH_X86_64</code> constant.
-	 */
-	public static final String ARCH_AMD64 = ARCH_X86_64;
-
-	/**
-	 * Constant string (value "ia64") indicating the platform is running on an
-	 * IA64-based architecture.
-	 * 
-	 * @since 3.0
-	 */
-	public static final String ARCH_IA64 = "ia64"; //$NON-NLS-1$
-
-	/**
-	 * Constant string (value "ia64_32") indicating the platform is running on an
-	 * IA64 32bit-based architecture.
-	 * 
-	 * @since 3.1
-	 */
-	public static final String ARCH_IA64_32 = "ia64_32";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "win32") indicating the platform is running on a
-	 * machine using the Windows windowing system.
-	 * <p>
-	 * Note this constant has been moved from the deprecated 
-	 * org.eclipse.core.boot.BootLoader class and its value has not changed.
-	 * </p>
-	 * @since 3.0
-	 */
-	public static final String WS_WIN32 = "win32";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "motif") indicating the platform is running on a
-	 * machine using the Motif windowing system.
-	 * <p>
-	 * Note this constant has been moved from the deprecated 
-	 * org.eclipse.core.boot.BootLoader class and its value has not changed.
-	 * </p>
-	 * @since 3.0
-	 */
-	public static final String WS_MOTIF = "motif";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "gtk") indicating the platform is running on a
-	 * machine using the GTK windowing system.
-	 * <p>
-	 * Note this constant has been moved from the deprecated 
-	 * org.eclipse.core.boot.BootLoader class and its value has not changed.
-	 * </p>
-	 * @since 3.0
-	 */
-	public static final String WS_GTK = "gtk";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "photon") indicating the platform is running on a
-	 * machine using the Photon windowing system.
-	 * <p>
-	 * Note this constant has been moved from the deprecated 
-	 * org.eclipse.core.boot.BootLoader class and its value has not changed.
-	 * </p>
-	 * @since 3.0
-	 */
-	public static final String WS_PHOTON = "photon";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "carbon") indicating the platform is running on a
-	 * machine using the Carbon windowing system (Mac OS X).
-	 * <p>
-	 * Note this constant has been moved from the deprecated 
-	 * org.eclipse.core.boot.BootLoader class and its value has not changed.
-	 * </p>
-	 * @since 3.0
-	 */
-	public static final String WS_CARBON = "carbon";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "unknown") indicating the platform is running on a
-	 * machine running an unknown windowing system.
-	 * <p>
-	 * Note this constant has been moved from the deprecated 
-	 * org.eclipse.core.boot.BootLoader class and its value has not changed.
-	 * </p>
-	 * @since 3.0
-	 */
-	public static final String WS_UNKNOWN = "unknown";//$NON-NLS-1$
-
-	// private constants for platform line separators and their associated platform names
-	private static final String LINE_SEPARATOR_KEY_MAC_OS_9 = Messages.line_separator_platform_mac_os_9;
-	private static final String LINE_SEPARATOR_KEY_UNIX = Messages.line_separator_platform_unix;
-	private static final String LINE_SEPARATOR_KEY_WINDOWS = Messages.line_separator_platform_windows;
-
-	private static final String LINE_SEPARATOR_VALUE_CR = "\r"; //$NON-NLS-1$
-	private static final String LINE_SEPARATOR_VALUE_LF = "\n"; //$NON-NLS-1$
-	private static final String LINE_SEPARATOR_VALUE_CRLF = "\r\n"; //$NON-NLS-1$
-
-	/**
-	 * Private constructor to block instance creation.
-	 */
-	private Platform() {
-		super();
-	}
-
-	/**
-	 * Adds the given authorization information to the key ring. The
-	 * information is relevant for the specified protection space and the
-	 * given authorization scheme. The protection space is defined by the
-	 * combination of the given server URL and realm. The authorization 
-	 * scheme determines what the authorization information contains and how 
-	 * it should be used. The authorization information is a <code>Map</code> 
-	 * of <code>String</code> to <code>String</code> and typically
-	 * contains information such as user names and passwords.
-	 *
-	 * @param serverUrl the URL identifying the server for this authorization
-	 *		information. For example, "http://www.example.com/".
-	 * @param realm the subsection of the given server to which this
-	 *		authorization information applies.  For example,
-	 *		"realm1@example.com" or "" for no realm.
-	 * @param authScheme the scheme for which this authorization information
-	 *		applies. For example, "Basic" or "" for no authorization scheme
-	 * @param info a <code>Map</code> containing authorization information 
-	 *		such as user names and passwords (key type : <code>String</code>, 
-	 *		value type : <code>String</code>)
-	 * @exception CoreException if there are problems setting the
-	 *		authorization information. Reasons include:
-	 * <ul>
-	 * <li>The keyring could not be saved.</li>
-	 * </ul>
-	 * XXX Move to a plug-in to be defined (JAAS plugin).
-	 */
-	public static void addAuthorizationInfo(URL serverUrl, String realm, String authScheme, Map info) throws CoreException {
-		InternalPlatform.getDefault().addAuthorizationInfo(serverUrl, realm, authScheme, info);
-	}
-
-	/** 
-	 * Adds the given log listener to the notification list of the platform.
-	 * <p>
-	 * Once registered, a listener starts receiving notification as entries
-	 * are added to plug-in logs via <code>ILog.log()</code>. The listener continues to
-	 * receive notifications until it is replaced or removed.
-	 * </p>
-	 *
-	 * @param listener the listener to register
-	 * @see ILog#addLogListener(ILogListener)
-	 * @see #removeLogListener(ILogListener)
-	 * XXX Use the LogMgr service.
-	 */
-	public static void addLogListener(ILogListener listener) {
-		InternalPlatform.getDefault().addLogListener(listener);
-	}
-
-	/**
-	 * Adds the specified resource to the protection space specified by the
-	 * given realm. All targets at or deeper than the depth of the last
-	 * symbolic element in the path of the given resource URL are assumed to
-	 * be in the same protection space.
-	 *
-	 * @param resourceUrl the URL identifying the resources to be added to
-	 *		the specified protection space. For example,
-	 *		"http://www.example.com/folder/".
-	 * @param realm the name of the protection space. For example,
-	 *		"realm1@example.com"
-	 * @exception CoreException if there are problems setting the
-	 *		authorization information. Reasons include:
-	 * <ul>
-	 * <li>The key ring could not be saved.</li>
-	 * </ul>
-	 * XXX Move to a plug-in to be defined (JAAS plugin).
-	 */
-	public static void addProtectionSpace(URL resourceUrl, String realm) throws CoreException {
-		InternalPlatform.getDefault().addProtectionSpace(resourceUrl, realm);
-	}
-
-	/**
-	 * Returns a URL that is the local equivalent of the
-	 * supplied URL. This method is expected to be used with the
-	 * plug-in-relative URLs returned by IPluginDescriptor, Bundle.getEntry()
-	 * and Platform.find().
-	 * If the specified URL is not a plug-in-relative URL, it 
-	 * is returned as is. If the specified URL is a plug-in-relative
-	 * URL of a file (including .jar archive), it is returned as 
-	 * a locally accessible URL using "file:" protocol
-	 * (extracting/caching the file locally, if required). If the specified URL
-	 * is a plug-in-relative URL of a directory, the directory and any files and directories
-	 * under it are made locally accessible likewise. 
-	 *
-	 * @param url original plug-in-relative URL.
-	 * @return the resolved URL
-	 * @exception IOException if unable to resolve URL
-	 * @see #resolve(URL)
-	 * @see #find(Bundle, IPath)
-	 * @see Bundle#getEntry(String)
-	 * @deprecated use {@link FileLocator#toFileURL(URL)} instead
-	 */
-	public static URL asLocalURL(URL url) throws IOException {
-		return FileLocator.toFileURL(url);
-	}
-
-	/**
-	 * Takes down the splash screen if one was put up.
-	 * XXX this is application life cycle. Need to have the appropriate method on IApplication.
-	 */
-	public static void endSplash() {
-		InternalPlatform.getDefault().endSplash();
-	}
-
-	/**
-	 * Removes the authorization information for the specified protection
-	 * space and given authorization scheme. The protection space is defined
-	 * by the given server URL and realm.
-	 *
-	 * @param serverUrl the URL identifying the server to remove the
-	 *		authorization information for. For example,
-	 *		"http://www.example.com/".
-	 * @param realm the subsection of the given server to remove the
-	 *		authorization information for. For example,
-	 *		"realm1@example.com" or "" for no realm.
-	 * @param authScheme the scheme for which the authorization information
-	 *		to remove applies. For example, "Basic" or "" for no
-	 *		authorization scheme.
-	 * @exception CoreException if there are problems removing the
-	 *		authorization information. Reasons include:
-	 * <ul>
-	 * <li>The keyring could not be saved.</li>
-	 * </ul>
-	 * XXX Move to a plug-in to be defined (JAAS plugin).
-	 */
-	public static void flushAuthorizationInfo(URL serverUrl, String realm, String authScheme) throws CoreException {
-		InternalPlatform.getDefault().flushAuthorizationInfo(serverUrl, realm, authScheme);
-	}
-
-	/**
-	 * Returns the adapter manager used for extending
-	 * <code>IAdaptable</code> objects.
-	 *
-	 * @return the adapter manager for this platform
-	 * @see IAdapterManager
-	 * XXX register as a service (same pattern than Jobs)
-	 * Do we want to make it available as a singleton?
-	 */
-	public static IAdapterManager getAdapterManager() {
-		return InternalPlatform.getDefault().getAdapterManager();
-	}
-
-	/**
-	 * Returns the authorization information for the specified protection
-	 * space and given authorization scheme. The protection space is defined
-	 * by the given server URL and realm. Returns <code>null</code> if no
-	 * such information exists.
-	 *
-	 * @param serverUrl the URL identifying the server for the authorization
-	 *		information. For example, "http://www.example.com/".
-	 * @param realm the subsection of the given server to which the
-	 *		authorization information applies.  For example,
-	 *		"realm1@example.com" or "" for no realm.
-	 * @param authScheme the scheme for which the authorization information
-	 *		applies. For example, "Basic" or "" for no authorization scheme
-	 * @return the authorization information for the specified protection
-	 *		space and given authorization scheme, or <code>null</code> if no
-	 *		such information exists
-	 *XXX Move to a plug-in to be defined (JAAS plugin).
-	 */
-	public static Map getAuthorizationInfo(URL serverUrl, String realm, String authScheme) {
-		return InternalPlatform.getDefault().getAuthorizationInfo(serverUrl, realm, authScheme);
-	}
-
-	/**
-	 * Returns the command line args provided to the Eclipse runtime layer when it was first run.
-	 * The returned value does not include arguments consumed by the lower levels of Eclipse
-	 * (e.g., OSGi or the launcher).
-	 * Note that individual platform runnables may be provided with different arguments
-	 * if they are being run individually rather than with <code>Platform.run()</code>.
-	 * <p>
-	 * Clients are also able to acquire the {@link EnvironmentInfo} service and query it for
-	 * the command-line arguments.
-	 * </p>
-	 * @return the command line used to start the platform
-	 */
-	public static String[] getCommandLineArgs() {
-		return InternalPlatform.getDefault().getCommandLineArgs();
-	}
-
-	/**
-	 * Returns the content type manager.
-	 * <p>
-	 * Clients are also able to acquire the {@link IContentTypeManager} service.
-	 * </p>
-	 * @return the content type manager
-	 * @since 3.0
-	 */
-	public static IContentTypeManager getContentTypeManager() {
-		return InternalPlatform.getDefault().getContentTypeManager();
-	}
-
-	/**
-	 * Returns the identified option.  <code>null</code>
-	 * is returned if no such option is found.   Options are specified
-	 * in the general form <i>&lt;plug-in id&gt;/&lt;option-path&gt;</i>.  
-	 * For example, <code>org.eclipse.core.runtime/debug</code>
-	 * <p>
-	 * Clients are also able to acquire the {@link DebugOptions} service
-	 * and query it for debug options.
-	 * </p>
-	 * @param option the name of the option to lookup
-	 * @return the value of the requested debug option or <code>null</code>
-	 */
-	public static String getDebugOption(String option) {
-		return InternalPlatform.getDefault().getOption(option);
-	}
-
-	/**
-	 * Returns the location of the platform working directory.  
-	 * <p>
-	 * Callers of this method should consider using <code>getInstanceLocation</code>
-	 * instead.  In various, typically non IDE-related configurations of Eclipse, the platform
-	 * working directory may not be on the local file system.  As such, the more general
-	 * form of this location is as a URL.
-	 * </p><p>
-	 * Alternatively, instead of calling <code>getInstanceLocation</code> clients are 
-	 * able to acquire the {@link Location} service (with the type {@link Location#INSTANCE_FILTER})
-	 * and then change the resulting URL to a path. See the javadoc for <code>getInstanceLocation</code>
-	 * for more details.
-	 * </p>
-	 * @return the location of the platform
-	 * @see #getInstanceLocation()
-	 */
-	public static IPath getLocation() throws IllegalStateException {
-		return InternalPlatform.getDefault().getLocation();
-	}
-
-	/**
-	 * Returns the location of the platform log file.  This file may contain information
-	 * about errors that have previously occurred during this invocation of the Platform.
-	 * <p>
-	 * It is recommended not to keep this value, as the log location may vary when an instance
-	 * location is being set.</p>
-	 * <p>
-	 * Note: it is very important that users of this method do not leave the log
-	 * file open for extended periods of time.  Doing so may prevent others
-	 * from writing to the log file, which could result in important error messages
-	 * being lost.  It is strongly recommended that clients wanting to read the
-	 * log file for extended periods should copy the log file contents elsewhere,
-	 * and immediately close the original file.</p>
-	 * @return the path of the log file on disk.
-	 * 
-	 * XXX  consider making an ILogger interface that listeners can implements and it allows 
-	 * us to implement Platform.getLogLocation()
-	 */
-	public static IPath getLogFileLocation() {
-		return InternalPlatform.getDefault().getMetaArea().getLogLocation();
-	}
-
-	/**
-	 * Returns the plug-in runtime object for the identified plug-in
-	 * or <code>null</code> if no such plug-in can be found.  If
-	 * the plug-in is defined but not yet activated, the plug-in will
-	 * be activated before being returned.
-	 * <p>
-	 * <b>Note</b>: This method is only able to find and return plug-in
-	 * objects for plug-ins described using plugin.xml according to the 
-	 * traditional Eclipse conventions.  Eclipse 3.0 permits plug-ins to be
-	 * described in manifest.mf files and to define their own bundle 
-	 * activators.  Such plug-ins cannot be discovered by this method.</p>
-	 *
-	 * @param id the unique identifier of the desired plug-in 
-	 *		(e.g., <code>"com.example.acme"</code>).
-	 * @return the plug-in runtime object, or <code>null</code>
-	 * @deprecated 
-	 * This method only works if the compatibility layer is installed and must not be used otherwise.
-	 * See the comments on {@link IPluginDescriptor#getPlugin()} for details.
-	 */
-	public static Plugin getPlugin(String id) {
-		try {
-			IPluginRegistry registry = getPluginRegistry();
-			if (registry == null)
-				throw new IllegalStateException();
-			IPluginDescriptor pd = registry.getPluginDescriptor(id);
-			if (pd == null)
-				return null;
-			return pd.getPlugin();
-		} catch (CoreException e) {
-			// TODO log the exception
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the plug-in registry for this platform.
-	 *
-	 * @return the plug-in registry
-	 * @see IPluginRegistry
-	 * @deprecated <code>IPluginRegistry</code> was refactored in Eclipse 3.0.
-	 * This method only works if the compatibility layer is installed and must not be used otherwise.
-	 * See the comments on {@link IPluginRegistry} and its methods for details.
-	 */
-	public static IPluginRegistry getPluginRegistry() {
-		Bundle compatibility = InternalPlatform.getDefault().getBundle(CompatibilityHelper.PI_RUNTIME_COMPATIBILITY);
-		if (compatibility == null)
-			throw new IllegalStateException();
-
-		Class oldInternalPlatform = null;
-		try {
-			oldInternalPlatform = compatibility.loadClass("org.eclipse.core.internal.plugins.InternalPlatform"); //$NON-NLS-1$
-			Method getPluginRegistry = oldInternalPlatform.getMethod("getPluginRegistry", null); //$NON-NLS-1$
-			return (IPluginRegistry) getPluginRegistry.invoke(oldInternalPlatform, null);
-		} catch (Exception e) {
-			//Ignore the exceptions, return null
-		}
-		return null;
-
-	}
-
-	/**
-	 * Returns the location in the local file system of the plug-in 
-	 * state area for the given plug-in.
-	 * The platform must be running.
-	 * <p>
-	 * The plug-in state area is a file directory within the
-	 * platform's metadata area where a plug-in is free to create files.
-	 * The content and structure of this area is defined by the plug-in,
-	 * and the particular plug-in is solely responsible for any files
-	 * it puts there. It is recommended for plug-in preference settings.
-	 * </p>
-	 *
-	 * @param plugin the plug-in whose state location is returned
-	 * @return a local file system path
-	 * @deprecated clients should call <code>getStateLocation</code> instead
-	 */
-	public static IPath getPluginStateLocation(Plugin plugin) {
-		return plugin.getStateLocation();
-	}
-
-	/**
-	 * Returns the protection space (realm) for the specified resource, or
-	 * <code>null</code> if the realm is unknown.
-	 *
-	 * @param resourceUrl the URL of the resource whose protection space is
-	 *		returned. For example, "http://www.example.com/folder/".
-	 * @return the protection space (realm) for the specified resource, or
-	 *		<code>null</code> if the realm is unknown
-	 *	 * XXX Move to a plug-in to be defined (JAAS plugin).
-	 */
-	public static String getProtectionSpace(URL resourceUrl) {
-		return InternalPlatform.getDefault().getProtectionSpace(resourceUrl);
-	}
-
-	/** 
-	 * Removes the indicated (identical) log listener from the notification list
-	 * of the platform.  If no such listener exists, no action is taken.
-	 *
-	 * @param listener the listener to de-register
-	 * @see ILog#removeLogListener(ILogListener)
-	 * @see #addLogListener(ILogListener)
-	 * XXX Use the LogMgr service.
-	 */
-	public static void removeLogListener(ILogListener listener) {
-		InternalPlatform.getDefault().removeLogListener(listener);
-	}
-
-	/**
-	 * Returns a URL which is the resolved equivalent of the
-	 * supplied URL. This method is expected to be used with the
-	 * plug-in-relative URLs returned by IPluginDescriptor, Bundle.getEntry()
-	 * and Platform.find().
-	 * <p>
-	 * If the specified URL is not a plug-in-relative URL, it is returned
-	 * as is. If the specified URL is a plug-in-relative URL, this method
-	 * attempts to reduce the given URL to one which is native to the Java
-	 * class library (eg. file, http, etc). 
-	 * </p><p>
-	 * Note however that users of this API should not assume too much about the
-	 * results of this method.  While it may consistently return a file: URL in certain
-	 * installation configurations, others may result in jar: or http: URLs.
-	 * </p>
-	 * @param url original plug-in-relative URL.
-	 * @return the resolved URL
-	 * @exception IOException if unable to resolve URL
-	 * @see #asLocalURL(URL)
-	 * @see #find(Bundle, IPath)
-	 * @see Bundle#getEntry(String)
-	 * @deprecated use {@link FileLocator#resolve(URL)} instead
-	 */
-	public static URL resolve(URL url) throws IOException {
-		return FileLocator.resolve(url);
-	}
-
-	/**
-	 * Runs the given runnable in a protected mode.   Exceptions
-	 * thrown in the runnable are logged and passed to the runnable's
-	 * exception handler.  Such exceptions are not rethrown by this method.
-	 *
-	 * @param runnable the runnable to run
-	 * @deprecated clients should use <code>SafeRunner#run</code> instead
-	 */
-	public static void run(ISafeRunnable runnable) {
-		SafeRunner.run(runnable);
-	}
-
-	/**
-	 * Returns the platform job manager.
-	 * 
-	 * @return the platform's job manager
-	 * @since 3.0
-	 * XXX deprecate to use Job.getJobManager().
-	 * Does it need to have a service? YES.
-	 */
-	public static IJobManager getJobManager() {
-		return Job.getJobManager();
-		// TODO: deprecate?
-	}
-
-	/**
-	 * Returns the extension registry for this platform.
-	 *
-	 * @return the extension registry
-	 * @see IExtensionRegistry
-	 * @since 3.0
-	 */
-	public static IExtensionRegistry getExtensionRegistry() {
-		return InternalPlatform.getDefault().getRegistry();
-	}
-
-	/**
-	 * Returns a URL for the given path in the given bundle.  Returns <code>null</code> if the URL
-	 * could not be computed or created.
-	 * 
-	 * @param bundle the bundle in which to search
-	 * @param path path relative to plug-in installation location 
-	 * @return a URL for the given path or <code>null</code>.  The actual form
-	 * of the returned URL is not specified.
-	 * @see #find(Bundle, IPath, Map)
-	 * @see #resolve(URL)
-	 * @see #asLocalURL(URL)
-	 * @since 3.0
-	 * @deprecated use {@link FileLocator#find(Bundle, IPath, Map)}
-	 */
-	public static URL find(Bundle bundle, IPath path) {
-		return FileLocator.find(bundle, path, null);
-	}
-
-	/**
-	 * Returns a URL for the given path in the given bundle.  Returns <code>null</code> if the URL
-	 * could not be computed or created.
-	 * <p>
-	 * find looks for this path in given bundle and any attached fragments.  
-	 * <code>null</code> is returned if no such entry is found.  Note that
-	 * there is no specific order to the fragments.
-	 * </p><p>
-	 * The following arguments may also be used
-	 * <pre>
-	 *     $nl$ - for language specific information
-	 *     $os$ - for operating system specific information
-	 *     $ws$ - for windowing system specific information
-	 * </pre>
-	 * </p><p>
-	 * A path of $nl$/about.properties in an environment with a default 
-	 * locale of en_CA will return a URL corresponding to the first place
-	 * about.properties is found according to the following order:
-	 * <pre>
-	 *     plugin root/nl/en/CA/about.properties
-	 *     fragment1 root/nl/en/CA/about.properties
-	 *     fragment2 root/nl/en/CA/about.properties
-	 *     ...
-	 *     plugin root/nl/en/about.properties
-	 *     fragment1 root/nl/en/about.properties
-	 *     fragment2 root/nl/en/about.properties
-	 *     ...
-	 *     plugin root/about.properties
-	 *     fragment1 root/about.properties
-	 *     fragment2 root/about.properties
-	 *     ...
-	 * </pre>
-	 * </p><p>
-	 * The current environment variable values can be overridden using 
-	 * the override map argument.
-	 * </p>
-	 * 
-	 * @param bundle the bundle in which to search
-	 * @param path file path relative to plug-in installation location
-	 * @param override map of override substitution arguments to be used for
-	 * any $arg$ path elements. The map keys correspond to the substitution
-	 * arguments (eg. "$nl$" or "$os$"). The resulting
-	 * values must be of type java.lang.String. If the map is <code>null</code>,
-	 * or does not contain the required substitution argument, the default
-	 * is used.
-	 * @return a URL for the given path or <code>null</code>.  The actual form
-	 * of the returned URL is not specified.
-	 * @see #resolve(URL)
-	 * @see #asLocalURL(URL)
-	 * @since 3.0
-	 * @deprecated use {@link FileLocator#find(Bundle, IPath, Map)} instead
-	 */
-	public static URL find(Bundle bundle, IPath path, Map override) {
-		return FileLocator.find(bundle, path, override);
-	}
-
-	/**
-	 * Returns the location in the local file system of the 
-	 * plug-in state area for the given bundle.
-	 * If the plug-in state area did not exist prior to this call,
-	 * it is created.
-	 * <p>
-	 * The plug-in state area is a file directory within the
-	 * platform's metadata area where a plug-in is free to create files.
-	 * The content and structure of this area is defined by the plug-in,
-	 * and the particular plug-in is solely responsible for any files
-	 * it puts there. It is recommended for plug-in preference settings and 
-	 * other configuration parameters.
-	 * </p>
-	 *
-	 * @param bundle the bundle whose state location if returned
-	 * @return a local file system path
-	 * @since 3.0
-	 * XXX Investigate the usage of a service factory
-	 */
-	public static IPath getStateLocation(Bundle bundle) {
-		return InternalPlatform.getDefault().getStateLocation(bundle);
-	}
-
-	/**
-	 * Returns a number that changes whenever the set of installed plug-ins
-	 * changes. This can be used for invalidating caches that are based on 
-	 * the set of currently installed plug-ins. (e.g. extensions)
-	 * <p>
-	 * Clients are also able to acquire the {@link PlatformAdmin} service
-	 * and get the timestamp from its state object.
-	 * </p>
-	 * @return a number related to the set of installed plug-ins
-	 * @since 3.1
-	 */
-	public static long getStateStamp() {
-		return InternalPlatform.getDefault().getStateTimeStamp();
-	}
-
-	/**
-	 * Returns the log for the given bundle.  If no such log exists, one is created.
-	 *
-	 * @param bundle the bundle whose log is returned
-	 * @return the log for the given bundle
-	 * @since 3.0
-	 * XXX change this into a LogMgr service that would keep track of the map. See if it can be a service factory.
-	 * It would contain all the methods that are here.
-	 * Relate to RuntimeLog if appropriate.
-	 * The system log listener needs to be optional: turned on or off. What about a system property? :-)
-	 */
-	public static ILog getLog(Bundle bundle) {
-		return InternalPlatform.getDefault().getLog(bundle);
-	}
-
-	/**
-	 * Returns the given bundle's resource bundle for the current locale. 
-	 * <p>
-	 * This resource bundle is typically stored as the plugin.properties file 
-	 * in the plug-in itself, and contains any translatable strings used in the 
-	 * plug-in manifest file (plugin.xml).
-	 * </p>
-	 * <p>
-	 * 	This mechanism is intended only for 
-	 * externalizing strings found in the plug-in manifest file. Using this 
-	 * method for externalizing strings in your code may result in degraded 
-	 * memory performance.
-	 * </p>
-	 *
-	 * @param bundle the bundle whose resource bundle is being queried
-	 * @return the resource bundle
-	 * @exception MissingResourceException if the resource bundle was not found
-	 * @since 3.0
-	 * XXX this is deprecated. use NLS or BundleFinder.find()
-	 */
-	public static ResourceBundle getResourceBundle(Bundle bundle) throws MissingResourceException {
-		return InternalPlatform.getDefault().getResourceBundle(bundle);
-	}
-
-	/**
-	 * Returns a resource string corresponding to the given argument value.
-	 * If the argument value specifies a resource key, the string
-	 * is looked up in the default resource bundle for the given runtime bundle. If the argument does not
-	 * specify a valid key, the argument itself is returned as the
-	 * resource string. The key lookup is performed in the
-	 * file referenced in the Bundle-Localization header of the bundle manifest. If a resource string 
-	 * corresponding to the key is not found in the resource bundle
-	 * the key value, or any default text following the key in the
-	 * argument value is returned as the resource string.
-	 * A key is identified as a string beginning with the "%" character.
-	 * Note, that the "%" character is stripped off prior to lookup
-	 * in the resource bundle.
-	 * <p>
-	 * Equivalent to <code>getResourceString(bundle, value, getResourceBundle())</code>
-	 * </p>
-	 *
-	 * @param bundle the bundle whose resource bundle is being queried
-	 * @param value the value to look for
-	 * @return the resource string
-	 * @see #getResourceBundle(Bundle)
-	 * @since 3.0
-	 * XXX this is deprecated. use NLS or  BundleFinder.find()
-	 */
-	public static String getResourceString(Bundle bundle, String value) {
-		return InternalPlatform.getDefault().getResourceString(bundle, value);
-	}
-
-	/**
-	 * Returns a resource string corresponding to the given argument 
-	 * value and resource bundle in the given runtime bundle.
-	 * If the argument value specifies a resource key, the string
-	 * is looked up in the given resource bundle. If the argument does not
-	 * specify a valid key, the argument itself is returned as the
-	 * resource string. The key lookup is performed against the
-	 * specified resource bundle. If a resource string 
-	 * corresponding to the key is not found in the resource bundle
-	 * the key value, or any default text following the key in the
-	 * argument value is returned as the resource string.
-	 * A key is identified as a string beginning with the "%" character.
-	 * Note that the "%" character is stripped off prior to lookup
-	 * in the resource bundle.
-	 * <p>
-	 * For example, assume resource bundle plugin.properties contains
-	 * name = Project Name
-	 * <pre>
-	 *     getResourceString("Hello World") returns "Hello World"</li>
-	 *     getResourceString("%name") returns "Project Name"</li>
-	 *     getResourceString("%name Hello World") returns "Project Name"</li>
-	 *     getResourceString("%abcd Hello World") returns "Hello World"</li>
-	 *     getResourceString("%abcd") returns "%abcd"</li>
-	 *     getResourceString("%%name") returns "%name"</li>
-	 * </pre>
-	 * </p>
-	 *
-	 * @param bundle the bundle whose resource bundle is being queried
-	 * @param value the value
-	 * @param resourceBundle the resource bundle to query
-	 * @return the resource string
-	 * @see #getResourceBundle(Bundle)
-	 * @since 3.0
-	 * XXX this is deprecated. use NLS or  BundleFinder.find()
-	 */
-	public static String getResourceString(Bundle bundle, String value, ResourceBundle resourceBundle) {
-		return InternalPlatform.getDefault().getResourceString(bundle, value, resourceBundle);
-	}
-
-	/**
-	 * Returns the string name of the current system architecture.  
-	 * The value is a user-defined string if the architecture is 
-	 * specified on the command line, otherwise it is the value 
-	 * returned by <code>java.lang.System.getProperty("os.arch")</code>.
-	 * <p>
-	 * Clients are also able to acquire the {@link EnvironmentInfo} service and query it for
-	 * the operating-system architecture.
-	 * </p>
-	 * @return the string name of the current system architecture
-	 * @since 3.0
-	 */
-	public static String getOSArch() {
-		return InternalPlatform.getDefault().getOSArch();
-	}
-
-	/**
-	 * Returns the string name of the current locale for use in finding files
-	 * whose path starts with <code>$nl$</code>.
-	 * <p>
-	 * Clients are also able to acquire the {@link EnvironmentInfo} service and query it for
-	 * the NL.
-	 * </p>
-	 * @return the string name of the current locale
-	 * @since 3.0
-	 */
-	public static String getNL() {
-		return InternalPlatform.getDefault().getNL();
-	}
-
-	/**
-	 * Returns the string name of the current operating system for use in finding
-	 * files whose path starts with <code>$os$</code>.  <code>OS_UNKNOWN</code> is
-	 * returned if the operating system cannot be determined.  
-	 * The value may indicate one of the operating systems known to the platform
-	 * (as specified in <code>knownOSValues</code>) or a user-defined string if
-	 * the operating system name is specified on the command line.
-	 * <p>
-	 * Clients are also able to acquire the {@link EnvironmentInfo} service and query it for
-	 * the operating-system.
-	 * </p>
-	 * @return the string name of the current operating system
-	 * @since 3.0
-	 */
-	public static String getOS() {
-		return InternalPlatform.getDefault().getOS();
-	}
-
-	/**
-	 * Returns the string name of the current window system for use in finding files
-	 * whose path starts with <code>$ws$</code>.  <code>null</code> is returned
-	 * if the window system cannot be determined.
-	 * <p>
-	 * Clients are also able to acquire the {@link EnvironmentInfo} service and query it for
-	 * the windowing system.
-	 * </p>
-	 * @return the string name of the current window system or <code>null</code>
-	 * @since 3.0
-	 */
-	public static String getWS() {
-		return InternalPlatform.getDefault().getWS();
-	}
-
-	/**
-	 * Returns the arguments not consumed by the framework implementation itself.  Which
-	 * arguments are consumed is implementation specific. These arguments are available 
-	 * for use by the application.
-	 * 
-	 * @return the array of command line arguments not consumed by the framework.
-	 * @since 3.0
-	 * XXX Use the Environment info service. Need to see how to set the value of the app args.
-	 */
-	public static String[] getApplicationArgs() {
-		return InternalPlatform.getDefault().getApplicationArgs();
-	}
-
-	/**
-	 * Returns the platform administrator for this running Eclipse.  
-	 * <p>
-	 * Note: This is an internal method and <em>must not</em> 
-	 * be used by clients which are not part of the Eclipse Platform.
-	 * This method allows access to classes which are not Eclipse 
-	 * Platform API but are part of the OSGi runtime that the Eclipse
-	 * Platform is built on. Even as the Eclipse Platform evolves 
-	 * in compatible ways from release to release, the details of 
-	 * the OSGi implementation might not. 
-	 * </p><p>
-	 * Clients can also acquire the {@link PlatformAdmin} service
-	 * to retrieve this object.
-	 * </p>
-	 * @return the platform admin for this instance of Eclipse
-	 * @since 3.0
-	 */
-	public static PlatformAdmin getPlatformAdmin() {
-		return InternalPlatform.getDefault().getPlatformAdmin();
-	}
-
-	/**
-	 * Returns the location of the platform's working directory (also known as the instance data area).  
-	 * <code>null</code> is returned if the platform is running without an instance location.
-	 * <p>
-	 * This method is equivalent to acquiring the <code>org.eclipse.osgi.service.datalocation.Location</code>
-	 * service with the property "type" equal to {@link Location#INSTANCE_FILTER}.
-	 *</p>
-	 * @return the location of the platform's instance data area or <code>null</code> if none
-	 * @since 3.0
-	 * @see Location#INSTANCE_FILTER
-	 */
-	public static Location getInstanceLocation() {
-		return InternalPlatform.getDefault().getInstanceLocation();
-	}
-
-	/**
-	 * Returns the currently registered bundle group providers.
-	 * <p>
-	 * Clients are also able to acquire the {@link IBundleGroupProvider} service and query it for
-	 * the registered bundle group providers.
-	 * </p>
-	 * @return the currently registered bundle group providers
-	 * @since 3.0
-	 */
-	public static IBundleGroupProvider[] getBundleGroupProviders() {
-		return InternalPlatform.getDefault().getBundleGroupProviders();
-	}
-
-	/**
-	 * Return the interface into the preference mechanism. The returned
-	 * object can be used for such operations as searching for preference 
-	 * values across multiple scopes and preference import/export.
-	 * <p>
-	 * Clients are also able to acquire the {@link IPreferencesService} service via
-	 * OSGi mechanisms and use it for preference functions.
-	 * </p>
-	 * @return an object to interface into the preference mechanism
-	 * @since 3.0
-	 */
-	public static IPreferencesService getPreferencesService() {
-		return InternalPlatform.getDefault().getPreferencesService();
-	}
-
-	/**
-	 * Returns the product which was selected when running this Eclipse instance
-	 * or <code>null</code> if none
-	 * @return the current product or <code>null</code> if none
-	 * @since 3.0
-	 * XXX move this into the app model.
-	 */
-	public static IProduct getProduct() {
-		return InternalPlatform.getDefault().getProduct();
-	}
-
-	/**
-	 * Registers the given bundle group provider with the platform.
-	 * <p>
-	 * Clients are also able to use the {@link IBundleGroupProvider} service to
-	 * register themselves as a bundle group provider.
-	 * </p>
-	 * @param provider a provider to register
-	 * @since 3.0
-	 */
-	public static void registerBundleGroupProvider(IBundleGroupProvider provider) {
-		InternalPlatform.getDefault().registerBundleGroupProvider(provider);
-	}
-
-	/**
-	 * De-registers the given bundle group provider with the platform.
-	 * <p>
-	 * Clients are also able to use the {@link IBundleGroupProvider} service mechanism
-	 * for unregistering themselves.
-	 * </p>
-	 * @param provider a provider to de-register
-	 * @since 3.0
-	 * @see #registerBundleGroupProvider(IBundleGroupProvider)
-	 */
-	public static void unregisterBundleGroupProvider(IBundleGroupProvider provider) {
-		InternalPlatform.getDefault().unregisterBundleGroupProvider(provider);
-	}
-
-	/**
-	 * Returns the location of the configuration information 
-	 * used to run this instance of Eclipse.  The configuration area typically
-	 * contains the list of plug-ins available for use, various settings
-	 * (those shared across different instances of the same configuration)
-	 * and any other such data needed by plug-ins.
-	 * <code>null</code> is returned if the platform is running without a configuration location.
-	 * <p>
-	 * This method is equivalent to acquiring the <code>org.eclipse.osgi.service.datalocation.Location</code>
-	 * service with the property "type" equal to {@link Location#CONFIGURATION_FILTER}.
-	 *</p>
-	 * @return the location of the platform's configuration data area or <code>null</code> if none
-	 * @since 3.0
-	 * @see Location#CONFIGURATION_FILTER
-	 */
-	public static Location getConfigurationLocation() {
-		return InternalPlatform.getDefault().getConfigurationLocation();
-	}
-
-	/**
-	 * Returns the location of the platform's user data area.  The user data area is a location on the system
-	 * which is specific to the system's current user.  By default it is located relative to the 
-	 * location given by the System property "user.home".  
-	 * <code>null</code> is returned if the platform is running without an user location.
-	 * <p>
-	 * This method is equivalent to acquiring the <code>org.eclipse.osgi.service.datalocation.Location</code>
-	 * service with the property "type" equal to {@link Location#USER_FILTER}.
-	 *</p>
-	 * @return the location of the platform's user data area or <code>null</code> if none
-	 * @since 3.0
-	 * @see Location#USER_FILTER
-	 */
-	public static Location getUserLocation() {
-		return InternalPlatform.getDefault().getUserLocation();
-	}
-
-	/**
-	 * Returns the location of the base installation for the running platform
-	 * <code>null</code> is returned if the platform is running without a configuration location.
-	 * <p>
-	 * This method is equivalent to acquiring the <code>org.eclipse.osgi.service.datalocation.Location</code>
-	 * service with the property "type" equal to {@link Location#INSTALL_FILTER}.
-	 *</p>
-	 * @return the location of the platform's installation area or <code>null</code> if none
-	 * @since 3.0
-	 * @see Location#INSTALL_FILTER
-	 */
-	public static Location getInstallLocation() {
-		return InternalPlatform.getDefault().getInstallLocation();
-	}
-
-	/**
-	 * Checks if the specified bundle is a fragment bundle.
-	 * <p>
-	 * Clients are also able to acquire the {@link PackageAdmin} service
-	 * to query if the given bundle is a fragment by asking for the bundle type
-	 * and checking against constants on the service interface.
-	 * </p>
-	 * @param bundle the bundle to query
-	 * @return true if the specified bundle is a fragment bundle; otherwise false is returned.
-	 * @since 3.0
-	 */
-	public static boolean isFragment(Bundle bundle) {
-		return InternalPlatform.getDefault().isFragment(bundle);
-	}
-
-	/**
-	 * Returns an array of attached fragment bundles for the specified bundle.  If the 
-	 * specified bundle is a fragment then <tt>null</tt> is returned.  If no fragments are 
-	 * attached to the specified bundle then <tt>null</tt> is returned.
-	 * <p>
-	 * Clients are also able to acquire the {@link PackageAdmin} service and query
-	 * it for the fragments of the given bundle.
-	 * </p>
-	 * @param bundle the bundle to get the attached fragment bundles for.
-	 * @return an array of fragment bundles or <tt>null</tt> if the bundle does not 
-	 * have any attached fragment bundles. 
-	 * @since 3.0
-	 */
-	public static Bundle[] getFragments(Bundle bundle) {
-		return InternalPlatform.getDefault().getFragments(bundle);
-	}
-
-	/**
-	 * Returns the resolved bundle with the specified symbolic name that has the
-	 * highest version.  If no resolved bundles are installed that have the 
-	 * specified symbolic name then null is returned.
-	 * <p>
-	 * Clients are also able to acquire the {@link PackageAdmin} service and query
-	 * it for the bundle with the specified symbolic name. Clients can ask the
-	 * service for all bundles with that particular name and then determine the
-	 * one with the highest version. Note that clients may want to filter
-	 * the results based on the state of the bundles.
-	 * </p>
-	 * @param symbolicName the symbolic name of the bundle to be returned.
-	 * @return the bundle that has the specified symbolic name with the 
-	 * highest version, or <tt>null</tt> if no bundle is found.
-	 * @since 3.0
-	 */
-	public static Bundle getBundle(String symbolicName) {
-		return InternalPlatform.getDefault().getBundle(symbolicName);
-	}
-
-	/**
-	 * Returns all bundles with the specified symbolic name.  If no resolved bundles 
-	 * with the specified symbolic name can be found, <tt>null</tt> is returned.  
-	 * If the version argument is not null then only the Bundles that have 
-	 * the specified symbolic name and a version greater than or equal to the 
-	 * specified version are returned. The returned bundles are ordered in 
-	 * descending bundle version order.
-	 * <p>
-	 * Clients are also able to acquire the {@link PackageAdmin} service and query
-	 * it for all bundle versions with the given symbolic name, after turning the
-	 * specific version into a version range. Note that clients may want to filter
-	 * the results based on the state of the bundles.
-	 * </p>
-	 * @param symbolicName the symbolic name of the bundles that are to be returned.
-	 * @param version the version that the return bundle versions must match, 
-	 * or <tt>null</tt> if no version matching is to be done. 
-	 * @return the array of Bundles with the specified name that match the 
-	 * specified version and match rule, or <tt>null</tt> if no bundles are found.
-	 */
-	public static Bundle[] getBundles(String symbolicName, String version) {
-		return InternalPlatform.getDefault().getBundles(symbolicName, version);
-	}
-
-	/**
-	 * Returns an array of host bundles that the specified fragment bundle is 
-	 * attached to or <tt>null</tt> if the specified bundle is not attached to a host.  
-	 * If the bundle is not a fragment bundle then <tt>null</tt> is returned.
-	 * <p>
-	 * Clients are also able to acquire the {@link PackageAdmin} service and query
-	 * it for the hosts for the given bundle.
-	 * </p>
-	 * @param bundle the bundle to get the host bundles for.
-	 * @return an array of host bundles or null if the bundle does not have any
-	 * host bundles.
-	 * @since 3.0
-	 */
-	public static Bundle[] getHosts(Bundle bundle) {
-		return InternalPlatform.getDefault().getHosts(bundle);
-	}
-
-	/**
-	 * Returns whether the platform is running.
-	 *
-	 * @return <code>true</code> if the platform is running, 
-	 *		and <code>false</code> otherwise
-	 *@since 3.0
-	 *XXX do what you want to do. track osgi, track runtime, or whatever.
-	 */
-	public static boolean isRunning() {
-		return InternalPlatform.getDefault().isRunning();
-	}
-
-	/**
-	 * Returns a list of known system architectures.
-	 * <p>
-	 * Note that this list is not authoritative; there may be legal values
-	 * not included in this list. Indeed, the value returned by 
-	 * <code>getOSArch</code> may not be in this list. Also, this list may 
-	 * change over time as Eclipse comes to run on more operating environments.
-	 * </p>
-	 * 
-	 * @return the list of system architectures known to the system
-	 * @see #getOSArch()
-	 * @since 3.0
-	 * XXX This is useless
-	 */
-	public static String[] knownOSArchValues() {
-		return InternalPlatform.getDefault().knownOSArchValues();
-	}
-
-	/**
-	 * Returns a list of known operating system names.
-	 * <p>
-	 * Note that this list is not authoritative; there may be legal values
-	 * not included in this list. Indeed, the value returned by 
-	 * <code>getOS</code> may not be in this list. Also, this list may 
-	 * change over time as Eclipse comes to run on more operating environments.
-	 * </p>
-	 * 
-	 * @return the list of operating systems known to the system
-	 * @see #getOS()
-	 * @since 3.0
-	 * XXX This is useless
-	 */
-	public static String[] knownOSValues() {
-		return InternalPlatform.getDefault().knownOSValues();
-	}
-
-	/**
-	 * Returns a map of known platform line separators. The keys are 
-	 * translated names of platforms and the values are their associated 
-	 * line separator strings.
-	 * 
-	 * @return a map of platform to their line separator string
-	 * @since 3.1
-	 */
-	public static Map knownPlatformLineSeparators() {
-		Map result = new HashMap();
-		result.put(LINE_SEPARATOR_KEY_MAC_OS_9, LINE_SEPARATOR_VALUE_CR);
-		result.put(LINE_SEPARATOR_KEY_UNIX, LINE_SEPARATOR_VALUE_LF);
-		result.put(LINE_SEPARATOR_KEY_WINDOWS, LINE_SEPARATOR_VALUE_CRLF);
-		return result;
-	}
-
-	/**
-	 * Returns a list of known windowing system names.
-	 * <p>
-	 * Note that this list is not authoritative; there may be legal values
-	 * not included in this list. Indeed, the value returned by 
-	 * <code>getWS</code> may not be in this list. Also, this list may 
-	 * change over time as Eclipse comes to run on more operating environments.
-	 * </p>
-	 * 
-	 * @return the list of window systems known to the system
-	 * @see #getWS()
-	 * @since 3.0
-	 * XXX This is useless
-	 */
-	public static String[] knownWSValues() {
-		return InternalPlatform.getDefault().knownWSValues();
-	}
-
-	/**
-	 * Returns <code>true</code> if the platform is currently running in 
-	 * debug mode.  The platform is typically put in debug mode using the
-	 * "-debug" command line argument.
-	 * <p>
-	 * Clients are also able to acquire the {@link EnvironmentInfo} service and query it 
-	 * to see if they are in debug mode.
-	 * </p>
-	 * @return whether or not the platform is running in debug mode
-	 * @since 3.0
-	 */
-	public static boolean inDebugMode() {
-		return PlatformActivator.getContext().getProperty("osgi.debug") != null; //$NON-NLS-1$
-	}
-
-	/**
-	 * Returns <code>true</code> if the platform is currently running in 
-	 * development mode.  That is, if special procedures are to be 
-	 * taken when defining plug-in class paths.  The platform is typically put in 
-	 * development mode using the "-dev" command line argument.
-	 * <p>
-	 * Clients are also able to acquire the {@link EnvironmentInfo} service and query it
-	 * to see if they are in development mode.
-	 * </p>
-	 * @return whether or not the platform is running in development mode
-	 * @since 3.0
-	 */
-	public static boolean inDevelopmentMode() {
-		return PlatformActivator.getContext().getProperty("osgi.dev") != null; //$NON-NLS-1$
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/Plugin.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/Plugin.java
deleted file mode 100644
index 3f90cc4..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/Plugin.java
+++ /dev/null
@@ -1,738 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-import java.io.*;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.util.Map;
-import org.eclipse.core.internal.preferences.PreferenceForwarder;
-import org.eclipse.core.internal.runtime.*;
-import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-import org.osgi.service.prefs.BackingStoreException;
-
-/**
- * The abstract superclass of all plug-in runtime class
- * implementations. A plug-in subclasses this class and overrides
- * the appropriate life cycle methods in order to react to the life cycle 
- * requests automatically issued by the platform.
- * For compatibility reasons, the methods called for those life cycle events 
- * vary, please see the "Constructors and life cycle methods" section below. 
- *  
- * <p>
- * Conceptually, the plug-in runtime class represents the entire plug-in
- * rather than an implementation of any one particular extension the
- * plug-in declares. A plug-in is not required to explicitly
- * specify a plug-in runtime class; if none is specified, the plug-in
- * will be given a default plug-in runtime object that ignores all life 
- * cycle requests (it still provides access to the corresponding
- * plug-in descriptor).
- * </p>
- * <p>
- * In the case of more complex plug-ins, it may be desirable
- * to define a concrete subclass of <code>Plugin</code>.
- * However, just subclassing <code>Plugin</code> is not
- * sufficient. The name of the class must be explicitly configured
- * in the plug-in's manifest (<code>plugin.xml</code>) file
- * with the class attribute of the <code>&ltplugin&gt</code> element markup.
- * </p>
- * <p>
- * Instances of plug-in runtime classes are automatically created 
- * by the platform in the course of plug-in activation. For compatibility reasons, 
- * the constructor used to create plug-in instances varies, please see the "Constructors 
- * and life cycle methods" section below.
- * </p><p>
- * The concept of bundles underlies plug-ins. However it is safe to regard plug-ins 
- * and bundles as synonyms. 
- * </p>
- * <p>
- * <b>Clients must never explicitly instantiate a plug-in runtime class</b>.
- * </p>
- * <p>
- * A typical implementation pattern for plug-in runtime classes is to
- * provide a static convenience method to gain access to a plug-in's
- * runtime object. This way, code in other parts of the plug-in
- * implementation without direct access to the plug-in runtime object
- * can easily obtain a reference to it, and thence to any plug-in-wide
- * resources recorded on it. An example for Eclipse 3.0 follows:
- * <pre>
- *     package myplugin;
- *     public class MyPluginClass extends Plugin {
- *         private static MyPluginClass instance;
- *
- *         public static MyPluginClass getInstance() { return instance; }
- *
- *         public void MyPluginClass() {
- *             super();
- *             instance = this;
- *             // ... other initialization
- *         }
- *         // ... other methods
- *     }
- * </pre>
- * In the above example, a call to <code>MyPluginClass.getInstance()</code>
- * will always return an initialized instance of <code>MyPluginClass</code>.
- * </p>
- * <p>
- * <b>Constructors and life cycle methods</b> 
- * </p><p>
- * If the plugin.xml of a plug-in indicates &lt;?eclipse version="3.0"?&gt; and its prerequisite
- * list includes <code>org.eclipse.core.runtime</code>, the default constructor of the plug-in 
- * class is used and {@link #start(BundleContext)} and {@link #stop(BundleContext)} are
- * called as life cycle methods.    
- * </p><p>
- * If the plugin.xml of a plug-in indicates &lt;?eclipse version="3.0"?&gt; and its prerequisite list includes
- * <code>org.eclipse.core.runtime.compatibility</code>, the {@link #Plugin(IPluginDescriptor)}
- * constructor is used and {@link #startup()} and {@link #shutdown()} are called as life cycle methods.
- * Note that in this situation, start() is called before startup() and stop() is called
- * after shutdown. 
- * </p><p>
- * If the plugin.xml of your plug-in does <b>not</b> indicate &lt;?eclipse version="3.0"?&gt; it is therefore
- * not a 3.0 plug-in. Consequently the {@link #Plugin(IPluginDescriptor)} is used and {@link #startup()} and 
- * {@link #shutdown()} are called as life cycle methods.
- * </p>
- */
-public abstract class Plugin implements BundleActivator {
-
-	/**
-	 * String constant used for the default scope name for legacy 
-	 * Eclipse plug-in preferences. 
-	 * 
-	 * @since 3.0
-	 */
-	public static final String PLUGIN_PREFERENCE_SCOPE = InstanceScope.SCOPE;
-
-	/**
-	 * The bundle associated this plug-in
-	 */
-	private Bundle bundle;
-
-	/**
-	 * The debug flag for this plug-in.  The flag is false by default.
-	 * It can be set to true either by the plug-in itself or in the platform 
-	 * debug options.
-	 */
-	private boolean debug = false;
-
-	/** The plug-in descriptor.
-	 * @deprecated Marked as deprecated to suppress deprecation warnings.
-	 */
-	private IPluginDescriptor descriptor;
-
-	/**
-	 * The base name (value <code>"preferences"</code>) for the file which is used for
-	 * overriding default preference values.
-	 *   
-	 * @since 2.0
-	 * @see #PREFERENCES_DEFAULT_OVERRIDE_FILE_NAME
-	 */
-	public static final String PREFERENCES_DEFAULT_OVERRIDE_BASE_NAME = "preferences"; //$NON-NLS-1$
-
-	/**
-	 * The name of the file (value <code>"preferences.ini"</code>) in a
-	 * plug-in's (read-only) directory that, when present, contains values that
-	 * override the normal default values for this plug-in's preferences.
-	 * <p>
-	 * The format of the file is as per <code>java.io.Properties</code> where
-	 * the keys are property names and values are strings.
-	 * </p>
-	 * 
-	 * @since 2.0
-	 */
-	public static final String PREFERENCES_DEFAULT_OVERRIDE_FILE_NAME = PREFERENCES_DEFAULT_OVERRIDE_BASE_NAME + ".ini"; //$NON-NLS-1$
-
-	/**
-	 * The preference object for this plug-in; initially <code>null</code>
-	 * meaning not yet created and initialized.
-	 * 
-	 * @since 2.0
-	 */
-	private PreferenceForwarder preferences = null;
-
-	/**
-	 * Creates a new plug-in runtime object.  This method is called by the platform
-	 * if this class is used as a <code>BundleActivator</code>.  This method is not 
-	 * needed/used if this plug-in requires the org.eclipse.core.runtime.compatibility plug-in.  
-	 * Subclasses of <code>Plugin</code> 
-	 * must call this method first in their constructors.  
-	 * 
-	 * The resultant instance is not managed by the runtime and
-	 * so should be remembered by the client (typically using a Singleton pattern).
-	 * <b>Clients must never explicitly call this method.</b>
-	 * </p> 
-	 * <p>
-	 * Note: The class loader typically has monitors acquired during invocation of this method.  It is 
-	 * strongly recommended that this method avoid synchronized blocks or other thread locking mechanisms,
-	 * as this would lead to deadlock vulnerability.
-	 * </p>
-	 * 
-	 * @since 3.0
-	 */
-	public Plugin() {
-		super();
-	}
-
-	/**
-	 * Creates a new plug-in runtime object for the given plug-in descriptor.
-	 * <p>
-	 * Instances of plug-in runtime classes are automatically created 
-	 * by the platform in the course of plug-in activation.
-	 * <b>Clients must never explicitly call this method.</b>
-	 * </p>
-	 * <p>
-	 * Note: The class loader typically has monitors acquired during invocation of this method.  It is 
-	 * strongly recommended that this method avoid synchronized blocks or other thread locking mechanisms,
-	 * as this would lead to deadlock vulnerability.
-	 * </p>
-	 *
-	 * @param descriptor the plug-in descriptor
-	 * @see #getDescriptor()
-	 * @deprecated
-	 * In Eclipse 3.0 this constructor has been replaced by {@link #Plugin()}.
-	 * Implementations of <code>MyPlugin(IPluginDescriptor descriptor)</code> should be changed to 
-	 * <code>MyPlugin()</code> and call <code>super()</code> instead of <code>super(descriptor)</code>.
-	 * The <code>MyPlugin(IPluginDescriptor descriptor)</code> constructor is called only for plug-ins 
-	 * which explicitly require the org.eclipse.core.runtime.compatibility plug-in.
-	 */
-	public Plugin(IPluginDescriptor descriptor) {
-		Assert.isNotNull(descriptor);
-		Assert.isTrue(!CompatibilityHelper.hasPluginObject(descriptor), NLS.bind(Messages.plugin_deactivatedLoad, this.getClass().getName(), descriptor.getUniqueIdentifier() + " is not activated")); //$NON-NLS-1$
-		this.descriptor = descriptor;
-
-		// on plugin start, find and start the corresponding bundle.
-		bundle = InternalPlatform.getDefault().getBundle(descriptor.getUniqueIdentifier());
-		try {
-			if ((bundle.getState() & (Bundle.STARTING | Bundle.ACTIVE | Bundle.STOPPING)) == 0)
-				bundle.start();
-		} catch (BundleException e) {
-			String message = NLS.bind(Messages.plugin_startupProblems, descriptor.getUniqueIdentifier());
-			IStatus status = new Status(IStatus.ERROR, Platform.PI_RUNTIME, IStatus.ERROR, message, e);
-			InternalPlatform.getDefault().log(status);
-		}
-	}
-
-	/**
-	 * Returns a URL for the given path.  Returns <code>null</code> if the URL
-	 * could not be computed or created.
-	 * 
-	 * @param path path relative to plug-in installation location 
-	 * @return a URL for the given path or <code>null</code>
-	 * @deprecated use {@link FileLocator#find(Bundle, IPath, Map)}
-	 */
-	public final URL find(IPath path) {
-		return FileLocator.find(bundle, path, null);
-	}
-
-	/**
-	 * Returns a URL for the given path.  Returns <code>null</code> if the URL
-	 * could not be computed or created.
-	 * 
-	 * @param path file path relative to plug-in installation location
-	 * @param override map of override substitution arguments to be used for
-	 * any $arg$ path elements. The map keys correspond to the substitution
-	 * arguments (eg. "$nl$" or "$os$"). The resulting
-	 * values must be of type java.lang.String. If the map is <code>null</code>,
-	 * or does not contain the required substitution argument, the default
-	 * is used.
-	 * @return a URL for the given path or <code>null</code>
-	 * @deprecated use {@link FileLocator#find(Bundle, IPath, Map)}
-	 */
-	public final URL find(IPath path, Map override) {
-		return FileLocator.find(bundle, path, override);
-	}
-
-	/**
-	 * Returns the plug-in descriptor for this plug-in runtime object.
-	 *
-	 * @return the plug-in descriptor for this plug-in runtime object
-	 * @deprecated 
-	 * <code>IPluginDescriptor</code> was refactored in Eclipse 3.0.
-	 * The <code>getDescriptor()</code> method may only be called by plug-ins 
-	 * which explicitly require the org.eclipse.core.runtime.compatibility plug-in.
-	 * See the comments on {@link IPluginDescriptor} and its methods for details.
-	 */
-	public final IPluginDescriptor getDescriptor() {
-		if (descriptor != null)
-			return descriptor;
-
-		return initializeDescriptor(bundle.getSymbolicName());
-	}
-
-	/**
-	 * Returns the log for this plug-in.  If no such log exists, one is created.
-	 *
-	 * @return the log for this plug-in
-	 * XXX change this into a LogMgr service that would keep track of the map. See if it can be a service factory.
-	 */
-	public final ILog getLog() {
-		return InternalPlatform.getDefault().getLog(bundle);
-	}
-
-	/**
-	 * Returns the location in the local file system of the 
-	 * plug-in state area for this plug-in.
-	 * If the plug-in state area did not exist prior to this call,
-	 * it is created.
-	 * <p>
-	 * The plug-in state area is a file directory within the
-	 * platform's metadata area where a plug-in is free to create files.
-	 * The content and structure of this area is defined by the plug-in,
-	 * and the particular plug-in is solely responsible for any files
-	 * it puts there. It is recommended for plug-in preference settings and 
-	 * other configuration parameters.
-	 * </p>
-	 * @throws IllegalStateException, when the system is running with no data area (-data @none),
-	 * or when a data area has not been set yet.
-	 * @return a local file system path
-	 *  XXX Investigate the usage of a service factory (see also platform.getStateLocation)
-	 */
-	public final IPath getStateLocation() throws IllegalStateException {
-		return InternalPlatform.getDefault().getStateLocation(bundle, true);
-	}
-
-	/**
-	 * Returns the preference store for this plug-in.
-	 * <p>
-	 * Note that if an error occurs reading the preference store from disk, an empty 
-	 * preference store is quietly created, initialized with defaults, and returned.
-	 * </p>
-	 * <p>
-	 * Calling this method may cause the preference store to be created and
-	 * initialized. Subclasses which reimplement the 
-	 * <code>initializeDefaultPluginPreferences</code> method have this opportunity
-	 * to initialize preference default values, just prior to processing override
-	 * default values imposed externally to this plug-in (specified for the product,
-	 * or at platform start up).
-	 * </p>
-	 * <p>
-	 * After settings in the preference store are changed (for example, with 
-	 * <code>Preferences.setValue</code> or <code>setToDefault</code>),
-	 * <code>savePluginPreferences</code> should be called to store the changed
-	 * values back to disk. Otherwise the changes will be lost on plug-in
-	 * shutdown.
-	 * </p>
-	 *
-	 * @return the preference store
-	 * @see #savePluginPreferences()
-	 * @see Preferences#setValue(String, String)
-	 * @see Preferences#setToDefault(String)
-	 * @since 2.0
-	 * XXX deprecate since this does not leverage the config, project scopes, etc...
-	 */
-	public final Preferences getPluginPreferences() {
-		if (preferences != null) {
-			if (InternalPlatform.DEBUG_PLUGIN_PREFERENCES)
-				InternalPlatform.message("Plugin preferences already loaded for: " + bundle.getSymbolicName()); //$NON-NLS-1$
-			return preferences;
-		}
-
-		if (InternalPlatform.DEBUG_PLUGIN_PREFERENCES)
-			InternalPlatform.message("Loading preferences for plugin: " + bundle.getSymbolicName()); //$NON-NLS-1$
-		preferences = new PreferenceForwarder(this, bundle.getSymbolicName());
-		return preferences;
-	}
-
-	/**
-	 * Saves preferences settings for this plug-in. Does nothing if the preference
-	 * store does not need saving.
-	 * <p>
-	 * Plug-in preferences are <b>not</b> saved automatically on plug-in shutdown.
-	 * </p>
-	 * 
-	 * @see Preferences#store(OutputStream, String)
-	 * @see Preferences#needsSaving()
-	 * @since 2.0
-	 * XXX deprecate call flush on the node for this bundle on the instance scope
-	 */
-	public final void savePluginPreferences() {
-		// populate the "preferences" instvar. We still might
-		// need to save them because someone else might have
-		// made changes via the OSGi APIs.
-		getPluginPreferences();
-		try {
-			preferences.flush();
-		} catch (BackingStoreException e) {
-			IStatus status = new Status(IStatus.ERROR, Platform.PI_RUNTIME, IStatus.ERROR, Messages.preferences_saveProblems, e);
-			InternalPlatform.getDefault().log(status);
-		}
-	}
-
-	/**
-	 * Initializes the default preferences settings for this plug-in.
-	 * <p>
-	 * This method is called sometime after the preference store for this
-	 * plug-in is created. Default values are never stored in preference
-	 * stores; they must be filled in each time. This method provides the
-	 * opportunity to initialize the default values.
-	 * </p>
-	 * <p>
-	 * The default implementation of this method does nothing. A subclass that needs
-	 * to set default values for its preferences must reimplement this method.
-	 * Default values set at a later point will override any default override
-	 * settings supplied from outside the plug-in (product configuration or
-	 * platform start up).
-	 * </p>
-	 * @since 2.0
-	 * @deprecated
-	 * This method has been refactored in the new preference mechanism 
-	 * to handle the case where the runtime compatibility layer does not exist. The 
-	 * contents of this method should be moved to the method named 
-	 * <code>initializeDefaultPreferences</code> in a separate subclass of 
-	 * {@link org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer}. 
-	 * This class should be contributed via the
-	 * <code>org.eclipse.core.runtime.preferences</code> extension point.
-	 * <pre>
-	 * 	&lt;extension point=&quo;org.eclipse.core.runtime.preferences&quo;&gt;
-	 *			&lt;initializer class=&quo;com.example.MyPreferenceInitializer&quo;/&gt;
-	 *		&lt;/extension&gt;
-	 *		...
-	 *		package com.example;
-	 *		public class MyPreferenceInitializer extends AbstractPreferenceInitializer {
-	 *			public MyPreferenceInitializer() {
-	 *				super();
-	 *			}
-	 *			public void initializeDefaultPreferences() {
-	 *				Preferences node = new DefaultScope().getNode("my.plugin.id");
-	 *				node.put(key, value);
-	 *			}
-	 *		}
-	 * </pre>
-	 */
-	protected void initializeDefaultPluginPreferences() {
-		// default implementation of this method - spec'd to do nothing
-	}
-
-	/**
-	 * Internal method. This method is a hook for
-	 * initialization of default preference values. 
-	 * It should not be called by clients.
-	 * 
-	 * @since 3.0
-	 */
-	public final void internalInitializeDefaultPluginPreferences() {
-		initializeDefaultPluginPreferences();
-	}
-
-	/**
-	 * Returns whether this plug-in is in debug mode.
-	 * By default plug-ins are not in debug mode.  A plug-in can put itself
-	 * into debug mode or the user can set an execution option to do so.
-	 * <p>
-	 * Note that the plug-in's debug flag is initialized when the 
-	 * plug-in is started. The result of calling this method before the plug-in
-	 * has started is unspecified.
-	 * </p>
-	 *
-	 * @return whether this plug-in is in debug mode
-	 * XXX deprecate use the service and cache as needed
-	 */
-	public boolean isDebugging() {
-		return debug;
-	}
-
-	/**
-	 * Returns an input stream for the specified file. The file path
-	 * must be specified relative this the plug-in's installation location.
-	 *
-	 * @param file path relative to plug-in installation location
-	 * @return an input stream
-	 * @exception IOException if the given path cannot be found in this plug-in
-	 * 
-	 * @see #openStream(IPath,boolean)
-	 * @deprecated use {@link FileLocator#openStream(Bundle, IPath, boolean)}
-	 */
-	public final InputStream openStream(IPath file) throws IOException {
-		return FileLocator.openStream(bundle, file, false);
-	}
-
-	/**
-	 * Returns an input stream for the specified file. The file path
-	 * must be specified relative to this plug-in's installation location.
-	 * Optionally, the platform searches for the correct localized version
-	 * of the specified file using the users current locale, and Java
-	 * naming convention for localized resource files (locale suffix appended 
-	 * to the specified file extension).
-	 * <p>
-	 * The caller must close the returned stream when done.
-	 * </p>
-	 *
-	 * @param file path relative to plug-in installation location
-	 * @param localized <code>true</code> for the localized version
-	 *   of the file, and <code>false</code> for the file exactly
-	 *   as specified
-	 * @return an input stream
-	 * @exception IOException if the given path cannot be found in this plug-in
-	 * @deprecated use {@link FileLocator#openStream(Bundle, IPath, boolean)}
-	 */
-	public final InputStream openStream(IPath file, boolean localized) throws IOException {
-		return FileLocator.openStream(bundle, file, localized);
-	}
-
-	/**
-	 * Sets whether this plug-in is in debug mode.
-	 * By default plug-ins are not in debug mode.  A plug-in can put itself
-	 * into debug mode or the user can set a debug option to do so.
-	 * <p>
-	 * Note that the plug-in's debug flag is initialized when the 
-	 * plug-in is started. The result of calling this method before the plug-in
-	 * has started is unspecified.
-	 * </p>
-	 *
-	 * @param value whether or not this plug-in is in debug mode
-	 * XXX deprecate use the service and cache as needed
-	 */
-	public void setDebugging(boolean value) {
-		debug = value;
-	}
-
-	/**
-	 * Shuts down this plug-in and discards all plug-in state.
-	 * <p>
-	 * This method should be re-implemented in subclasses that need to do something
-	 * when the plug-in is shut down.  Implementors should call the inherited method
-	 * to ensure that any system requirements can be met.
-	 * </p>
-	 * <p>
-	 * Plug-in shutdown code should be robust. In particular, this method
-	 * should always make an effort to shut down the plug-in. Furthermore,
-	 * the code should not assume that the plug-in was started successfully,
-	 * as this method will be invoked in the event of a failure during startup.
-	 * </p>
-	 * <p>
-	 * Note 1: If a plug-in has been started, this method will be automatically
-	 * invoked by the platform when the platform is shut down.
-	 * </p>
-	 * <p>
-	 * Note 2: This method is intended to perform simple termination
-	 * of the plug-in environment. The platform may terminate invocations
-	 * that do not complete in a timely fashion.
-	 * </p>
-	 * <b>Clients must never explicitly call this method.</b>
-	 * <p>
-	 *
-	 * @exception CoreException if this method fails to shut down
-	 *   this plug-in
-	 * @deprecated 
-	 * In Eclipse 3.0 this method has been replaced by {@link Plugin#stop(BundleContext context)}.
-	 * Implementations of <code>shutdown()</code> should be changed to override 
-	 * <code>stop(BundleContext context)</code> and call <code>super.stop(context)</code> 
-	 * instead of <code>super.shutdown()</code>.
-	 * The <code>shutdown()</code> method is called only for plug-ins which explicitly require the 
-	 * org.eclipse.core.runtime.compatibility plug-in.
-	 */
-	public void shutdown() throws CoreException {
-		if (CompatibilityHelper.initializeCompatibility() == null)
-			return;
-		Throwable exception = null;
-		Method m;
-		try {
-			m = descriptor.getClass().getMethod("doPluginDeactivation", new Class[0]); //$NON-NLS-1$
-			m.invoke(descriptor, null);
-		} catch (SecurityException e) {
-			exception = e;
-		} catch (NoSuchMethodException e) {
-			exception = e;
-		} catch (IllegalArgumentException e) {
-			exception = e;
-		} catch (IllegalAccessException e) {
-			exception = e;
-		} catch (InvocationTargetException e) {
-			exception = e;
-		}
-		if (exception == null)
-			return;
-		String message = NLS.bind(Messages.plugin_shutdownProblems, descriptor.getUniqueIdentifier());
-		IStatus status = new Status(IStatus.ERROR, Platform.PI_RUNTIME, IStatus.ERROR, message, exception);
-		InternalPlatform.getDefault().log(status);
-	}
-
-	/**
-	 * Starts up this plug-in.
-	 * <p>
-	 * This method should be overridden in subclasses that need to do something
-	 * when this plug-in is started.  Implementors should call the inherited method
-	 * to ensure that any system requirements can be met.
-	 * </p>
-	 * <p>
-	 * If this method throws an exception, it is taken as an indication that
-	 * plug-in initialization has failed; as a result, the plug-in will not
-	 * be activated; moreover, the plug-in will be marked as disabled and 
-	 * ineligible for activation for the duration.
-	 * </p>
-	 * <p>
-	 * Plug-in startup code should be robust. In the event of a startup failure,
-	 * the plug-in's <code>shutdown</code> method will be invoked automatically,
-	 * in an attempt to close open files, etc.
-	 * </p>
-	 * <p>
-	 * Note 1: This method is automatically invoked by the platform 
-	 * the first time any code in the plug-in is executed.
-	 * </p>
-	 * <p>
-	 * Note 2: This method is intended to perform simple initialization 
-	 * of the plug-in environment. The platform may terminate initializers 
-	 * that do not complete in a timely fashion.
-	 * </p>
-	 * <p>
-	 * Note 3: The class loader typically has monitors acquired during invocation of this method.  It is 
-	 * strongly recommended that this method avoid synchronized blocks or other thread locking mechanisms,
-	 * as this would lead to deadlock vulnerability.
-	 * </p>
-	 * <b>Clients must never explicitly call this method.</b>
-	 * <p>
-	 *
-	 * @exception CoreException if this plug-in did not start up properly
-	 * @deprecated 
-	 * In Eclipse 3.0 this method has been replaced by {@link Plugin#start(BundleContext context)}.
-	 * Implementations of <code>startup()</code> should be changed to extend
-	 * <code>start(BundleContext context)</code> and call <code>super.start(context)</code>
-	 * instead of <code>super.startup()</code>.
-	 * The <code>startup()</code> method is called only for plug-ins which explicitly require the 
-	 * org.eclipse.core.runtime.compatibility plug-in.
-	 */
-	public void startup() throws CoreException {
-	}
-
-	/**
-	 * Returns a string representation of the plug-in, suitable 
-	 * for debugging purposes only.
-	 */
-	public String toString() {
-		String name = bundle.getSymbolicName();
-		return name == null ? new Long(bundle.getBundleId()).toString() : name;
-	}
-
-	/**
-	 * Starts up this plug-in.
-	 * <p>
-	 * This method should be overridden in subclasses that need to do something
-	 * when this plug-in is started.  Implementors should call the inherited method
-	 * at the first possible point to ensure that any system requirements can be met.
-	 * </p>
-	 * <p>
-	 * If this method throws an exception, it is taken as an indication that
-	 * plug-in initialization has failed; as a result, the plug-in will not
-	 * be activated; moreover, the plug-in will be marked as disabled and 
-	 * ineligible for activation for the duration.
-	 * </p>
-	 * <p>
-	 * Plug-in startup code should be robust. In the event of a startup failure,
-	 * the plug-in's <code>shutdown</code> method will be invoked automatically,
-	 * in an attempt to close open files, etc.
-	 * </p>
-	 * <p>
-	 * Note 1: This method is automatically invoked by the platform 
-	 * the first time any code in the plug-in is executed.
-	 * </p>
-	 * <p>
-	 * Note 2: This method is intended to perform simple initialization 
-	 * of the plug-in environment. The platform may terminate initializers 
-	 * that do not complete in a timely fashion.
-	 * </p>
-	 * <p>
-	 * Note 3: The class loader typically has monitors acquired during invocation of this method.  It is 
-	 * strongly recommended that this method avoid synchronized blocks or other thread locking mechanisms,
-	 * as this would lead to deadlock vulnerability.
-	 * </p>
-	 * <p>
-	 * Note 4: The supplied bundle context represents the plug-in to the OSGi framework.
-	 * For security reasons, it is strongly recommended that this object should not be divulged.
-	 * </p>
-	 * <b>Clients must never explicitly call this method.</b>
-	 *
-	 * @param context the bundle context for this plug-in
-	 * @exception Exception if this plug-in did not start up properly
-	 * @since 3.0
-	 */
-	public void start(BundleContext context) throws Exception {
-		bundle = context.getBundle();
-
-		String symbolicName = bundle.getSymbolicName();
-		if (symbolicName != null) {
-			String key = symbolicName + "/debug"; //$NON-NLS-1$
-			String value = InternalPlatform.getDefault().getOption(key);
-			this.debug = value == null ? false : value.equalsIgnoreCase("true"); //$NON-NLS-1$
-		}
-
-		initializeDescriptor(symbolicName);
-	}
-
-	/**
-	 * @deprecated Marked as deprecated to suppress deprecation warnings.
-	 */
-	private IPluginDescriptor initializeDescriptor(String symbolicName) {
-		if (CompatibilityHelper.initializeCompatibility() == null)
-			return null;
-
-		//This associate a descriptor to any real bundle that uses this to start
-		if (symbolicName == null)
-			return null;
-
-		IPluginDescriptor tmp = CompatibilityHelper.getPluginDescriptor(symbolicName);
-
-		//Runtime descriptor is never set to support dynamic re-installation of compatibility 
-		if (!symbolicName.equals(Platform.PI_RUNTIME))
-			descriptor = tmp;
-
-		CompatibilityHelper.setPlugin(tmp, this);
-		CompatibilityHelper.setActive(tmp);
-		return tmp;
-	}
-
-	/**
-	 * Stops this plug-in.
-	 * <p>
-	 * This method should be re-implemented in subclasses that need to do something
-	 * when the plug-in is shut down.  Implementors should call the inherited method
-	 * as late as possible to ensure that any system requirements can be met.
-	 * </p>
-	 * <p>
-	 * Plug-in shutdown code should be robust. In particular, this method
-	 * should always make an effort to shut down the plug-in. Furthermore,
-	 * the code should not assume that the plug-in was started successfully,
-	 * as this method will be invoked in the event of a failure during startup.
-	 * </p>
-	 * <p>
-	 * Note 1: If a plug-in has been automatically started, this method will be automatically
-	 * invoked by the platform when the platform is shut down.
-	 * </p>
-	 * <p>
-	 * Note 2: This method is intended to perform simple termination
-	 * of the plug-in environment. The platform may terminate invocations
-	 * that do not complete in a timely fashion.
-	 * </p>
-	 * <p>
-	 * Note 3: The supplied bundle context represents the plug-in to the OSGi framework.
-	 * For security reasons, it is strongly recommended that this object should not be divulged.
-	 * </p>
-	 * <b>Clients must never explicitly call this method.</b>
-	 * 
-	 * @param context the bundle context for this plug-in
-	 * @exception Exception if this method fails to shut down this plug-in
-	 * @since 3.0
-	 */
-	public void stop(BundleContext context) throws Exception {
-		// sub-classes to override
-	}
-
-	/**
-	 * Returns the bundle associated with this plug-in.
-	 * 
-	 * @return the associated bundle
-	 * @since 3.0
-	 */
-	public final Bundle getBundle() {
-		return bundle;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/Preferences.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/Preferences.java
deleted file mode 100644
index e2fe96a..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/Preferences.java
+++ /dev/null
@@ -1,1270 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-import java.io.*;
-import java.util.*;
-import org.eclipse.core.internal.preferences.PreferencesService;
-import org.eclipse.core.internal.preferences.PrefsMessages;
-import org.eclipse.core.runtime.preferences.*;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * A table of preference settings, mapping named properties to values. Property
- * names are non-empty strings; property values can be either booleans,
- * non-null strings, or values of one of the primitive number types.
- * The table consists of two, sparse, layers: the lower layer holds default values 
- * for properties, and the upper layer holds explicitly set values for properties.
- * Normal retrieval looks for an explicitly set value for the given property in
- * the upper layer; if there is nothing for that property in the upper layer, it
- * next looks for a default value for the given property in the lower layer; if
- * there is nothing for that property in the lower layer, it returns a standard
- * default-default value. The default-default values for the primitive types are
- * as follows:
- * <ul>
- * 	<li><code>boolean</code> = <code>false</code></li>
- * 	<li><code>double</code> = <code>0.0</code></li>
- * 	<li><code>float</code> = <code>0.0f</code></li>
- * 	<li><code>int</code> = <code>0</code></li>
- *  <li><code>long</code> = <code>0L</code></li>
- * 	<li><code>String</code> = <code>""</code> (the empty string)</li>
- * </ul>
- * <p>
- * Internally, all properties values (in both layers) are stored as strings.
- * Standard conversions to and from numeric and boolean types are performed on
- * demand.
- * </p>
- * <p>
- * The typical usage is to establish the defaults for all known properties
- * and then restore previously stored values for properties whose values 
- * were explicitly set. The existing settings can be changed and new properties
- * can be set (<code>setValue</code>). If the values specified is the same as 
- * the default value, the explicit setting is deleted from the top layer.
- * It is also possible to reset a property value back to the default value 
- * using <code>setToDefault</code>. After the properties have been modified, 
- * the properties with explicit settings are written to disk. The default values
- * are never saved. This two-tiered approach
- * to saving and restoring property setting minimizes the number of properties
- * that need to be persisted; indeed, the normal starting state does not require
- * storing any properties at all. It also makes it easy to use different 
- * default settings in different environments while maintaining just those
- * property settings the user has adjusted.
- * </p>
- * <p>
- * A property change event is reported whenever a property's value actually
- * changes (either through <code>setValue</code>, <code>setToDefault</code>).
- * Note, however, that manipulating default values (with <code>setDefault</code>)
- * does not cause any events to be reported.
- * </p>
- * <p>
- * Clients may instantiate this class. This class was not designed to be 
- * subclassed.
- * </p>
- * <p>
- * The implementation is based on a pair of internal 
- * <code>java.util.Properties</code> objects, one holding explicitly set values
- * (set using <code>setValue</code>), the other holding the default values
- * (set using <code>setDefaultValue</code>). The <code>load</code> and
- * <code>store</code> methods persist the non-default property values to 
- * streams (the default values are not saved).
- * </p>
- * <p>
- * If a client sets a default value to be equivalent to the default-default for that
- * type, the value is still known to the preference store as having a default value.
- * That is, the name will still be returned in the result of the <code>defaultPropertyNames</code>
- * and <code>contains</code> methods.
- * </p>
- * 
- * @since 2.0
- */
-public class Preferences {
-
-	/**
-	 * The default-default value for boolean properties (<code>false</code>).
-	 */
-	public static final boolean BOOLEAN_DEFAULT_DEFAULT = false;
-
-	/**
-	 * The default-default value for double properties (<code>0.0</code>).
-	 */
-	public static final double DOUBLE_DEFAULT_DEFAULT = 0.0;
-
-	/**
-	 * The default-default value for float properties (<code>0.0f</code>).
-	 */
-	public static final float FLOAT_DEFAULT_DEFAULT = 0.0f;
-
-	/**
-	 * The default-default value for int properties (<code>0</code>).
-	 */
-	public static final int INT_DEFAULT_DEFAULT = 0;
-
-	/**
-	 * The default-default value for long properties (<code>0L</code>).
-	 */
-	public static final long LONG_DEFAULT_DEFAULT = 0L;
-
-	/**
-	 * The default-default value for String properties (<code>""</code>).
-	 */
-	public static final String STRING_DEFAULT_DEFAULT = ""; //$NON-NLS-1$
-
-	/**
-	 * The string representation used for <code>true</code>
-	 * (<code>"true"</code>).
-	 */
-	protected static final String TRUE = "true"; //$NON-NLS-1$
-
-	/**
-	 * The string representation used for <code>false</code>
-	 * (<code>"false"</code>).
-	 */
-	protected static final String FALSE = "false"; //$NON-NLS-1$
-
-	/**
-	 * Singleton empty string array (optimization)
-	 */
-	private static final String[] EMPTY_STRING_ARRAY = new String[0];
-
-	/** 
-	 * The simple identifier constant (value "<code>preferences</code>") of
-	 * the extension point of the Core Runtime plug-in where plug-ins declare
-	 * extensions to the preference facility. A plug-in may define any number
-	 * of preference extensions.
-	 * 
-	 * @since 3.2
-	 */
-	public static final String PT_PREFERENCES = "preferences"; //$NON-NLS-1$
-
-	/**
-	 * An event object describing a change to a named property.
-	 * <p>
-	 * The preferences object reports property change events for internal state
-	 * changes that may be of interest to external parties. A special listener
-	 * interface (<code>Preferences.IPropertyChangeListener</code>) is 
-	 * defined for this purpose. Listeners are registered via the
-	 * <code>Preferences.addPropertyChangeListener</code> method.
-	 * </p>
-	 * <p>
-	 * Clients cannot instantiate or subclass this class.
-	 * </p>
-	 *
-	 * @see Preferences#addPropertyChangeListener(Preferences.IPropertyChangeListener)
-	 * @see Preferences.IPropertyChangeListener
-	 */
-	public static class PropertyChangeEvent extends EventObject {
-		/**
-		 * All serializable objects should have a stable serialVersionUID
-		 */
-		private static final long serialVersionUID = 1L;
-
-		/**
-		 * The name of the changed property.
-		 */
-		private String propertyName;
-
-		/**
-		 * The old value of the changed property, or <code>null</code> if
-		 * not known or not relevant.
-		 */
-		private Object oldValue;
-
-		/**
-		 * The new value of the changed property, or <code>null</code> if
-		 * not known or not relevant.
-		 */
-		private Object newValue;
-
-		/**
-		 * Creates a new property change event.
-		 *
-		 * @param source the object whose property has changed
-		 * @param property the property that has changed (must not be 
-		 *    <code>null</code>)
-		 * @param oldValue the old value of the property, or 
-		 *    <code>null</code> if none
-		 * @param newValue the new value of the property, or 
-		 *    <code>null</code> if none
-		 */
-		protected PropertyChangeEvent(Object source, String property, Object oldValue, Object newValue) {
-
-			super(source);
-			if (property == null) {
-				throw new IllegalArgumentException();
-			}
-			this.propertyName = property;
-			this.oldValue = oldValue;
-			this.newValue = newValue;
-		}
-
-		/**
-		 * Returns the name of the property that changed.
-		 * <p>
-		 * Warning: there is no guarantee that the property name returned
-		 * is a constant string.  Callers must compare property names using
-		 * <code>equals</code>, not ==.
-		 *</p>
-		 * 
-		 * @return the name of the property that changed
-		 */
-		public String getProperty() {
-			return propertyName;
-		}
-
-		/**
-		 * Returns the new value of the property.
-		 *
-		 * @return the new value, or <code>null</code> if not known
-		 *  or not relevant
-		 */
-		public Object getNewValue() {
-			return newValue;
-		}
-
-		/**
-		 * Returns the old value of the property.
-		 *
-		 * @return the old value, or <code>null</code> if not known
-		 *  or not relevant
-		 */
-		public Object getOldValue() {
-			return oldValue;
-		}
-	}
-
-	/**
-	 * Listener for property changes.
-	 * <p>
-	 * Usage:
-	 * <pre>
-	 * Preferences.IPropertyChangeListener listener =
-	 *   new Preferences.IPropertyChangeListener() {
-	 *      public void propertyChange(Preferences.PropertyChangeEvent event) {
-	 *         ... // code to deal with occurrence of property change
-	 *      }
-	 *   };
-	 * emitter.addPropertyChangeListener(listener);
-	 * ...
-	 * emitter.removePropertyChangeListener(listener);
-	 * </pre>
-	 * </p>
-	 * <p>
-	 * <em>Note:</em> Depending on the means in which the property
-	 * values changed, the old and new values for the property can 
-	 * be either typed, a string representation of the value, or <code>null</code>.
-	 * Clients who wish to behave properly in all cases should all
-	 * three cases in their implementation of the property change listener.
-	 * </p>
-	 */
-	public interface IPropertyChangeListener extends EventListener {
-
-		/**
-		 * Notification that a property has changed.
-		 * <p>
-		 * This method gets called when the observed object fires a property
-		 * change event.
-		 * </p>
-		 *
-		 * @param event the property change event object describing which
-		 *    property changed and how
-		 */
-		public void propertyChange(Preferences.PropertyChangeEvent event);
-	}
-
-	/** 
-	 * List of registered listeners (element type: 
-	 * <code>IPropertyChangeListener</code>).
-	 * These listeners are to be informed when the current value of a property
-	 * changes.
-	 */
-	protected ListenerList listeners = new ListenerList();
-
-	/**
-	 * The mapping from property name to
-	 * property value (represented as strings).
-	 */
-	private Properties properties;
-
-	/**
-	 * The mapping from property name to
-	 * default property value (represented as strings);
-	 * <code>null</code> if none.
-	 */
-	private Properties defaultProperties;
-
-	/**
-	 * Indicates whether a value has been changed by <code>setToDefault</code>
-	 * or <code>setValue</code>; initially <code>false</code>.
-	 */
-	protected boolean dirty = false;
-
-	/**
-	 * Exports all non-default-valued preferences for all installed plugins to the 
-	 * provided file. If a file already exists at the given location, it will be deleted.
-	 * If there are no preferences to export, no file will be written.
-	 * <p>
-	 * The file that is written can be read later using the importPreferences method.
-	 * </p>
-	 * @param path The absolute file system path of the file to export preferences to.
-	 * @exception CoreException if this method fails. Reasons include:
-	 * <ul>
-	 * <li> The file could not be written.</li>
-	 * </ul>
-	 * @see #importPreferences(IPath)
-	 * @see #validatePreferenceVersions(IPath)
-	 */
-	public static void exportPreferences(IPath path) throws CoreException {
-		File file = path.toFile();
-		if (file.exists())
-			file.delete();
-		file.getParentFile().mkdirs();
-		IPreferencesService service = PreferencesService.getDefault();
-		OutputStream output = null;
-		FileOutputStream fos = null;
-		try {
-			fos = new FileOutputStream(file);
-			output = new BufferedOutputStream(fos);
-			IEclipsePreferences node = (IEclipsePreferences) service.getRootNode().node(InstanceScope.SCOPE);
-			service.exportPreferences(node, output, (String[]) null);
-			output.flush();
-			fos.getFD().sync();
-		} catch (IOException e) {
-			String message = NLS.bind(PrefsMessages.preferences_errorWriting, file, e.getMessage());
-			IStatus status = new Status(IStatus.ERROR, PrefsMessages.OWNER_NAME, IStatus.ERROR, message, e);
-			throw new CoreException(status);
-		} finally {
-			if (output != null)
-				try {
-					output.close();
-				} catch (IOException e) {
-					// ignore
-				}
-		}
-	}
-
-	/**
-	 * Loads the plugin preferences from the given file, and replaces all 
-	 * non-default-valued preferences for all plugins with the values from this file.
-	 * <p>
-	 * If the file contains preferences for plug-ins that don't exist in the current
-	 * install, they are ignored.  This method does not validate if the plug-in
-	 * versions in the preference file match the currently installed plug-ins.
-	 * Clients should first call validatePreferenceVersions on the file to ensure
-	 * that the versions are compatible.
-	 * </p>
-	 * <p>
-	 * The file must have been written by the exportPreferences method.
-	 * </p>
-	 * @param path The absolute file system path of the file to import preferences from.
-	 * @exception CoreException if this method fails. Reasons include:
-	 * <ul>
-	 * <li> The file does not exist.</li>
-	 * <li> The file could not be read.</li>
-	 * </ul>
-	 * @see #exportPreferences(IPath)
-	 * @see #validatePreferenceVersions(IPath)
-	 */
-	public static void importPreferences(IPath path) throws CoreException {
-		if (!path.toFile().exists()) {
-			String msg = NLS.bind(PrefsMessages.preferences_fileNotFound, path.toOSString());
-			throw new CoreException(new Status(IStatus.ERROR, PrefsMessages.OWNER_NAME, 1, msg, null));
-		}
-		IPreferencesService service = PreferencesService.getDefault();
-		InputStream input = null;
-		try {
-			input = new BufferedInputStream(new FileInputStream(path.toFile()));
-			service.importPreferences(input);
-		} catch (FileNotFoundException e) {
-			String msg = NLS.bind(PrefsMessages.preferences_fileNotFound, path.toOSString());
-			throw new CoreException(new Status(IStatus.ERROR, PrefsMessages.OWNER_NAME, 1, msg, e));
-		} finally {
-			if (input != null)
-				try {
-					input.close();
-				} catch (IOException e) {
-					// ignore
-				}
-		}
-	}
-
-	/**
-	 * Validates that the preference versions in the given file match the versions
-	 * of the currently installed plugins.  Returns an OK status if all preferences match 
-	 * the currently installed plugins, otherwise a MultiStatus describing what 
-	 * plugins have preferences that don't match.  
-	 * <p>
-	 * If the returned status has a <code>IStatus.WARNING</code> severity, 
-	 * it means that some preferences may not be applicable but for the most 
-	 * part they will be compatible.  If the returned status has a 
-	 * <code>IStatus.ERROR</code> severity, it means that the preferences 
-	 * will probably not be compatible.
-	 * <p>
-	 * If the file contains preferences for plug-ins that don't exist in the current
-	 * install, they are ignored.
-	 * </p>
-	 * <p>
-	 * The file must have been written by the exportPreferences method.
-	 * </p>
-	 * @param file The absolute file system path of the preference file to validate.
-	 * @see #exportPreferences(IPath)
-	 * @see #importPreferences(IPath)
-	 */
-	public static IStatus validatePreferenceVersions(IPath file) {
-		PreferencesService service = PreferencesService.getDefault();
-		return service.validateVersions(file);
-	}
-
-	/**
-	 * Creates an empty preference table.
-	 * <p>
-	 * Use the methods <code>load(InputStream)</code> and
-	 * <code>store(InputStream)</code> to load and store these preferences.
-	 * </p>
-	 * @see #load(InputStream)
-	 * @see #store(OutputStream, String)
-	 */
-	public Preferences() {
-		defaultProperties = new Properties();
-		properties = new Properties(defaultProperties);
-	}
-
-	/**
-	 * Adds a property change listener to this preference object.
-	 * Has no affect if the identical listener is already registered.
-	 * <p>
-	 * <em>Note:</em> Depending on the means in which the property
-	 * values changed, the old and new values for the property can 
-	 * be either typed, a string representation of the value, or <code>null</code>.
-	 * Clients who wish to behave properly in all cases should all
-	 * three cases in their implementation of the property change listener.
-	 * </p>
-	 * @param listener a property change listener
-	 */
-	public void addPropertyChangeListener(IPropertyChangeListener listener) {
-		listeners.add(listener);
-	}
-
-	/**
-	 * Removes the given listener from this preference object.
-	 * Has no affect if the listener is not registered.
-	 *
-	 * @param listener a property change listener
-	 */
-	public void removePropertyChangeListener(IPropertyChangeListener listener) {
-		listeners.remove(listener);
-	}
-
-	/**
-	 * Returns whether the given property is known to this preference object,
-	 * either by having an explicit setting or by having a default
-	 * setting. Returns <code>false</code> if the given name is <code>null</code>.
-	 *
-	 * @param name the name of the property, or <code>null</code>
-	 * @return <code>true</code> if either a current value or a default
-	 *  value is known for the named property, and <code>false</code>otherwise
-	 */
-	public boolean contains(String name) {
-		return (properties.containsKey(name) || defaultProperties.containsKey(name));
-	}
-
-	/**
-	 * Fires a property change event corresponding to a change to the
-	 * current value of the property with the given name.
-	 *
-	 * @param name the name of the property, to be used as the property
-	 *  in the event object
-	 * @param oldValue the old value, or <code>null</code> if not known or not
-	 *    relevant
-	 * @param newValue the new value, or <code>null</code> if not known or not
-	 *    relevant
-	 */
-	protected void firePropertyChangeEvent(String name, Object oldValue, Object newValue) {
-		if (name == null)
-			throw new IllegalArgumentException();
-		Object[] changeListeners = this.listeners.getListeners();
-		// Do we even need to fire an event?
-		if (changeListeners.length == 0)
-			return;
-		final PropertyChangeEvent pe = new PropertyChangeEvent(this, name, oldValue, newValue);
-		for (int i = 0; i < changeListeners.length; ++i) {
-			final IPropertyChangeListener l = (IPropertyChangeListener) changeListeners[i];
-			ISafeRunnable job = new ISafeRunnable() {
-				public void handleException(Throwable exception) {
-					// already being logged in Platform#run()
-				}
-
-				public void run() throws Exception {
-					l.propertyChange(pe);
-				}
-			};
-			SafeRunner.run(job);
-		}
-	}
-
-	/**
-	 * Returns the current value of the boolean-valued property with the
-	 * given name.
-	 * Returns the default-default value (<code>false</code>) if there
-	 * is no property with the given name, or if the current value 
-	 * cannot be treated as a boolean.
-	 * The given name must not be <code>null</code>.
-	 *
-	 * @param name the name of the property
-	 * @return the boolean-valued property
-	 */
-	public boolean getBoolean(String name) {
-		String value = properties.getProperty(name);
-		if (value == null) {
-			return BOOLEAN_DEFAULT_DEFAULT;
-		}
-		return value.equals(Preferences.TRUE);
-	}
-
-	/**
-	 * Sets the current value of the boolean-valued property with the
-	 * given name. The given name must not be <code>null</code>.
-	 * <p>
-	 * A property change event is reported if the current value of the 
-	 * property actually changes from its previous value. In the event
-	 * object, the property name is the name of the property, and the
-	 * old and new values are wrapped as objects.
-	 * </p>
-	 * <p>
-	 * If the given value is the same as the corresponding default value
-	 * for the given property, the explicit setting is deleted.
-	 * Note that the recommended way of re-initializing a property to its
-	 * default value is to call <code>setToDefault</code>.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 * @param value the new current value of the property
-	 */
-	public void setValue(String name, boolean value) {
-		boolean defaultValue = getDefaultBoolean(name);
-		boolean oldValue = getBoolean(name);
-		if (value == defaultValue) {
-			Object removed = properties.remove(name);
-			if (removed != null) {
-				// removed an explicit setting
-				dirty = true;
-			}
-		} else {
-			properties.put(name, value ? Preferences.TRUE : Preferences.FALSE);
-		}
-		if (oldValue != value) {
-			// mark as dirty since value did really change
-			dirty = true;
-			// report property change if getValue now returns different value
-			firePropertyChangeEvent(name, oldValue ? Boolean.TRUE : Boolean.FALSE, value ? Boolean.TRUE : Boolean.FALSE);
-		}
-	}
-
-	/**
-	 * Returns the default value for the boolean-valued property
-	 * with the given name.
-	 * Returns the default-default value (<code>false</code>) if there
-	 * is no default property with the given name, or if the default 
-	 * value cannot be treated as a boolean.
-	 * The given name must not be <code>null</code>.
-	 *
-	 * @param name the name of the property
-	 * @return the default value of the named property
-	 */
-	public boolean getDefaultBoolean(String name) {
-		String value = defaultProperties.getProperty(name);
-		if (value == null) {
-			return BOOLEAN_DEFAULT_DEFAULT;
-		}
-		return value.equals(Preferences.TRUE);
-	}
-
-	/**
-	 * Sets the default value for the boolean-valued property with the
-	 * given name. The given name must not be <code>null</code>.
-	 * <p>
-	 * Note that the current value of the property is affected if
-	 * the property's current value was its old default value, in which
-	 * case it changes to the new default value. If the property's current
-	 * is different from its old default value, its current value is
-	 * unaffected. No property change events are reported by changing default
-	 * values.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 * @param value the new default value for the property
-	 */
-	public void setDefault(String name, boolean value) {
-		defaultProperties.put(name, value ? Preferences.TRUE : Preferences.FALSE);
-	}
-
-	/**
-	 * Returns the current value of the double-valued property with the
-	 * given name.
-	 * Returns the default-default value (<code>0.0</code>) if there
-	 * is no property with the given name, or if the current value 
-	 * cannot be treated as a double.
-	 * The given name must not be <code>null</code>.
-	 *
-	 * @param name the name of the property
-	 * @return the double-valued property
-	 */
-	public double getDouble(String name) {
-		return convertToDouble(properties.getProperty(name), DOUBLE_DEFAULT_DEFAULT);
-	}
-
-	/**
-	 * Sets the current value of the double-valued property with the
-	 * given name. The given name must not be <code>null</code>.
-	 * <p>
-	 * A property change event is reported if the current value of the 
-	 * property actually changes from its previous value. In the event
-	 * object, the property name is the name of the property, and the
-	 * old and new values are wrapped as objects.
-	 * </p>
-	 * <p>
-	 * If the given value is the same as the corresponding default value
-	 * for the given property, the explicit setting is deleted.
-	 * Note that the recommended way of re-initializing a property to its
-	 * default value is to call <code>setToDefault</code>.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 * @param value the new current value of the property; must be 
-	 *   a number (not a NaN)
-	 */
-	public void setValue(String name, double value) {
-		if (Double.isNaN(value)) {
-			throw new IllegalArgumentException();
-		}
-		double defaultValue = getDefaultDouble(name);
-		double oldValue = getDouble(name);
-		if (value == defaultValue) {
-			Object removed = properties.remove(name);
-			if (removed != null) {
-				// removed an explicit setting
-				dirty = true;
-			}
-		} else {
-			properties.put(name, Double.toString(value));
-		}
-		if (oldValue != value) {
-			// mark as dirty since value did really change
-			dirty = true;
-			// report property change if getValue now returns different value
-			firePropertyChangeEvent(name, new Double(oldValue), new Double(value));
-		}
-	}
-
-	/**
-	 * Returns the default value for the double-valued property
-	 * with the given name.
-	 * Returns the default-default value (<code>0.0</code>) if there
-	 * is no default property with the given name, or if the default 
-	 * value cannot be treated as a double.
-	 * The given name must not be <code>null</code>.
-	 *
-	 * @param name the name of the property
-	 * @return the default value of the named property
-	 */
-	public double getDefaultDouble(String name) {
-		return convertToDouble(defaultProperties.getProperty(name), DOUBLE_DEFAULT_DEFAULT);
-	}
-
-	/**
-	 * Sets the default value for the double-valued property with the
-	 * given name. The given name must not be <code>null</code>. 
-	 * <p>
-	 * Note that the current value of the property is affected if
-	 * the property's current value was its old default value, in which
-	 * case it changes to the new default value. If the property's current
-	 * is different from its old default value, its current value is
-	 * unaffected. No property change events are reported by changing default
-	 * values.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 * @param value the new default value for the property; must be 
-	 *   a number (not a NaN)
-	 */
-	public void setDefault(String name, double value) {
-		if (Double.isNaN(value)) {
-			throw new IllegalArgumentException();
-		}
-		defaultProperties.put(name, Double.toString(value));
-	}
-
-	/**
-	 * Converts the given raw property value string to a double.
-	 * 
-	 * @param rawPropertyValue the raw property value, or <code>null</code>
-	 *   if none
-	 * @param defaultValue the default value
-	 * @return the raw value converted to a double, or the given 
-	 *    <code>defaultValue</code> if the raw value is <code>null</code> or
-	 *    cannot be parsed as a double
-	 */
-	private double convertToDouble(String rawPropertyValue, double defaultValue) {
-		double result = defaultValue;
-		if (rawPropertyValue != null) {
-			try {
-				result = Double.parseDouble(rawPropertyValue);
-			} catch (NumberFormatException e) {
-				// raw value cannot be treated as one of these
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * Returns the current value of the float-valued property with the
-	 * given name.
-	 * Returns the default-default value (<code>0.0f</code>) if there
-	 * is no property with the given name, or if the current value 
-	 * cannot be treated as a float.
-	 * The given name must not be <code>null</code>.
-	 *
-	 * @param name the name of the property
-	 * @return the float-valued property
-	 */
-	public float getFloat(String name) {
-		return convertToFloat(properties.getProperty(name), FLOAT_DEFAULT_DEFAULT);
-	}
-
-	/**
-	 * Sets the current value of the float-valued property with the
-	 * given name. The given name must not be <code>null</code>.
-	 * <p>
-	 * A property change event is reported if the current value of the 
-	 * property actually changes from its previous value. In the event
-	 * object, the property name is the name of the property, and the
-	 * old and new values are wrapped as objects.
-	 * </p>
-	 * <p>
-	 * If the given value is the same as the corresponding default value
-	 * for the given property, the explicit setting is deleted.
-	 * Note that the recommended way of re-initializing a property to its
-	 * default value is to call <code>setToDefault</code>.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 * @param value the new current value of the property; must be 
-	 *   a number (not a NaN)
-	 */
-	public void setValue(String name, float value) {
-		if (Float.isNaN(value)) {
-			throw new IllegalArgumentException();
-		}
-		float defaultValue = getDefaultFloat(name);
-		float oldValue = getFloat(name);
-		if (value == defaultValue) {
-			Object removed = properties.remove(name);
-			if (removed != null) {
-				// removed an explicit setting
-				dirty = true;
-			}
-		} else {
-			properties.put(name, Float.toString(value));
-		}
-		if (oldValue != value) {
-			// mark as dirty since value did really change
-			dirty = true;
-			// report property change if getValue now returns different value
-			firePropertyChangeEvent(name, new Float(oldValue), new Float(value));
-		}
-	}
-
-	/**
-	 * Returns the default value for the float-valued property
-	 * with the given name.
-	 * Returns the default-default value (<code>0.0f</code>) if there
-	 * is no default property with the given name, or if the default 
-	 * value cannot be treated as a float.
-	 * The given name must not be <code>null</code>.
-	 *
-	 * @param name the name of the property
-	 * @return the default value of the named property
-	 */
-	public float getDefaultFloat(String name) {
-		return convertToFloat(defaultProperties.getProperty(name), FLOAT_DEFAULT_DEFAULT);
-	}
-
-	/**
-	 * Sets the default value for the float-valued property with the
-	 * given name. The given name must not be <code>null</code>. 
-	 * <p>
-	 * Note that the current value of the property is affected if
-	 * the property's current value was its old default value, in which
-	 * case it changes to the new default value. If the property's current
-	 * is different from its old default value, its current value is
-	 * unaffected. No property change events are reported by changing default
-	 * values.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 * @param value the new default value for the property; must be 
-	 *   a number (not a NaN)
-	 */
-	public void setDefault(String name, float value) {
-		if (Float.isNaN(value)) {
-			throw new IllegalArgumentException();
-		}
-		defaultProperties.put(name, Float.toString(value));
-	}
-
-	/**
-	 * Converts the given raw property value string to a float.
-	 * 
-	 * @param rawPropertyValue the raw property value, or <code>null</code>
-	 *   if none
-	 * @param defaultValue the default value
-	 * @return the raw value converted to a float, or the given 
-	 *    <code>defaultValue</code> if the raw value is <code>null</code> or
-	 *    cannot be parsed as a float
-	 */
-	private float convertToFloat(String rawPropertyValue, float defaultValue) {
-		float result = defaultValue;
-		if (rawPropertyValue != null) {
-			try {
-				result = Float.parseFloat(rawPropertyValue);
-			} catch (NumberFormatException e) {
-				// raw value cannot be treated as one of these
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * Returns the current value of the integer-valued property with the
-	 * given name.
-	 * Returns the default-default value (<code>0</code>) if there
-	 * is no property with the given name, or if the current value 
-	 * cannot be treated as an integer.
-	 * The given name must not be <code>null</code>.
-	 *
-	 * @param name the name of the property
-	 * @return the int-valued property
-	 */
-	public int getInt(String name) {
-		return convertToInt(properties.getProperty(name), INT_DEFAULT_DEFAULT);
-	}
-
-	/**
-	 * Sets the current value of the integer-valued property with the
-	 * given name. The given name must not be <code>null</code>.
-	 * <p>
-	 * A property change event is reported if the current value of the 
-	 * property actually changes from its previous value. In the event
-	 * object, the property name is the name of the property, and the
-	 * old and new values are wrapped as objects.
-	 * </p>
-	 * <p>
-	 * If the given value is the same as the corresponding default value
-	 * for the given property, the explicit setting is deleted.
-	 * Note that the recommended way of re-initializing a property to its
-	 * default value is to call <code>setToDefault</code>.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 * @param value the new current value of the property
-	 */
-	public void setValue(String name, int value) {
-		int defaultValue = getDefaultInt(name);
-		int oldValue = getInt(name);
-		if (value == defaultValue) {
-			Object removed = properties.remove(name);
-			if (removed != null) {
-				// removed an explicit setting
-				dirty = true;
-			}
-		} else {
-			properties.put(name, Integer.toString(value));
-		}
-		if (oldValue != value) {
-			// mark as dirty since value did really change
-			dirty = true;
-			// report property change if getValue now returns different value
-			firePropertyChangeEvent(name, new Integer(oldValue), new Integer(value));
-		}
-	}
-
-	/**
-	 * Returns the default value for the integer-valued property
-	 * with the given name.
-	 * Returns the default-default value (<code>0</code>) if there
-	 * is no default property with the given name, or if the default 
-	 * value cannot be treated as an integer.
-	 * The given name must not be <code>null</code>.
-	 *
-	 * @param name the name of the property
-	 * @return the default value of the named property
-	 */
-	public int getDefaultInt(String name) {
-		return convertToInt(defaultProperties.getProperty(name), INT_DEFAULT_DEFAULT);
-	}
-
-	/**
-	 * Sets the default value for the integer-valued property with the
-	 * given name. The given name must not be <code>null</code>. 
-	 * <p>
-	 * Note that the current value of the property is affected if
-	 * the property's current value was its old default value, in which
-	 * case it changes to the new default value. If the property's current
-	 * is different from its old default value, its current value is
-	 * unaffected. No property change events are reported by changing default
-	 * values.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 * @param value the new default value for the property
-	 */
-	public void setDefault(String name, int value) {
-		defaultProperties.put(name, Integer.toString(value));
-	}
-
-	/**
-	 * Converts the given raw property value string to an int.
-	 * 
-	 * @param rawPropertyValue the raw property value, or <code>null</code>
-	 *   if none
-	 * @param defaultValue the default value
-	 * @return the raw value converted to an int, or the given 
-	 *    <code>defaultValue</code> if the raw value is <code>null</code> or
-	 *    cannot be parsed as an int
-	 */
-	private int convertToInt(String rawPropertyValue, int defaultValue) {
-		int result = defaultValue;
-		if (rawPropertyValue != null) {
-			try {
-				result = Integer.parseInt(rawPropertyValue);
-			} catch (NumberFormatException e) {
-				// raw value cannot be treated as one of these
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * Returns the current value of the long-valued property with the
-	 * given name.
-	 * Returns the default-default value (<code>0L</code>) if there
-	 * is no property with the given name, or if the current value 
-	 * cannot be treated as a long.
-	 * The given name must not be <code>null</code>.
-	 *
-	 * @param name the name of the property
-	 * @return the long-valued property
-	 */
-	public long getLong(String name) {
-		return convertToLong(properties.getProperty(name), LONG_DEFAULT_DEFAULT);
-	}
-
-	/**
-	 * Sets the current value of the long-valued property with the
-	 * given name. The given name must not be <code>null</code>.
-	 * <p>
-	 * A property change event is reported if the current value of the 
-	 * property actually changes from its previous value. In the event
-	 * object, the property name is the name of the property, and the
-	 * old and new values are wrapped as objects.
-	 * </p>
-	 * <p>
-	 * If the given value is the same as the corresponding default value
-	 * for the given property, the explicit setting is deleted.
-	 * Note that the recommended way of re-initializing a property to its
-	 * default value is to call <code>setToDefault</code>.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 * @param value the new current value of the property
-	 */
-	public void setValue(String name, long value) {
-		long defaultValue = getDefaultLong(name);
-		long oldValue = getLong(name);
-		if (value == defaultValue) {
-			Object removed = properties.remove(name);
-			if (removed != null) {
-				// removed an explicit setting
-				dirty = true;
-			}
-		} else {
-			properties.put(name, Long.toString(value));
-		}
-		if (oldValue != value) {
-			// mark as dirty since value did really change
-			dirty = true;
-			// report property change if getValue now returns different value
-			firePropertyChangeEvent(name, new Long(oldValue), new Long(value));
-		}
-	}
-
-	/**
-	 * Returns the default value for the long-valued property
-	 * with the given name.
-	 * Returns the default-default value (<code>0L</code>) if there
-	 * is no default property with the given name, or if the default 
-	 * value cannot be treated as a long.
-	 * The given name must not be <code>null</code>.
-	 *
-	 * @param name the name of the property
-	 * @return the default value of the named property
-	 */
-	public long getDefaultLong(String name) {
-		return convertToLong(defaultProperties.getProperty(name), LONG_DEFAULT_DEFAULT);
-	}
-
-	/**
-	 * Sets the default value for the long-valued property with the
-	 * given name. The given name must not be <code>null</code>. 
-	 * <p>
-	 * Note that the current value of the property is affected if
-	 * the property's current value was its old default value, in which
-	 * case it changes to the new default value. If the property's current
-	 * is different from its old default value, its current value is
-	 * unaffected. No property change events are reported by changing default
-	 * values.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 * @param value the new default value for the property
-	 */
-	public void setDefault(String name, long value) {
-		defaultProperties.put(name, Long.toString(value));
-	}
-
-	/**
-	 * Converts the given raw property value string to a long.
-	 * 
-	 * @param rawPropertyValue the raw property value, or <code>null</code>
-	 *   if none
-	 * @param defaultValue the default value
-	 * @return the raw value converted to a long, or the given 
-	 *    <code>defaultValue</code> if the raw value is <code>null</code> or
-	 *    cannot be parsed as a long
-	 */
-	private long convertToLong(String rawPropertyValue, long defaultValue) {
-		long result = defaultValue;
-		if (rawPropertyValue != null) {
-			try {
-				result = Long.parseLong(rawPropertyValue);
-			} catch (NumberFormatException e) {
-				// raw value cannot be treated as one of these
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * Returns the current value of the string-valued property with the
-	 * given name.
-	 * Returns the default-default value (the empty string <code>""</code>)
-	 * if there is no property with the given name.
-	 * The given name must not be <code>null</code>.
-	 *
-	 * @param name the name of the property
-	 * @return the string-valued property
-	 */
-	public String getString(String name) {
-		String value = properties.getProperty(name);
-		return (value != null ? value : STRING_DEFAULT_DEFAULT);
-	}
-
-	/**
-	 * Sets the current value of the string-valued property with the
-	 * given name. The given name must not be <code>null</code>.
-	 * <p>
-	 * A property change event is reported if the current value of the 
-	 * property actually changes from its previous value. In the event
-	 * object, the property name is the name of the property, and the
-	 * old and new values are wrapped as objects.
-	 * </p>
-	 * <p>
-	 * If the given value is the same as the corresponding default value
-	 * for the given property, the explicit setting is deleted.
-	 * Note that the recommended way of re-initializing a property to its
-	 * default value is to call <code>setToDefault</code>.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 * @param value the new current value of the property
-	 */
-	public void setValue(String name, String value) {
-		if (value == null) {
-			throw new IllegalArgumentException();
-		}
-		String defaultValue = getDefaultString(name);
-		String oldValue = getString(name);
-		if (value.equals(defaultValue)) {
-			Object removed = properties.remove(name);
-			if (removed != null) {
-				// removed an explicit setting
-				dirty = true;
-			}
-		} else {
-			properties.put(name, value);
-		}
-		if (!oldValue.equals(value)) {
-			// mark as dirty since value did really change
-			dirty = true;
-			// report property change if getValue now returns different value
-			firePropertyChangeEvent(name, oldValue, value);
-		}
-	}
-
-	/**
-	 * Returns the default value for the string-valued property
-	 * with the given name.
-	 * Returns the default-default value (the empty string <code>""</code>) 
-	 * is no default property with the given name, or if the default 
-	 * value cannot be treated as a string.
-	 * The given name must not be <code>null</code>.
-	 *
-	 * @param name the name of the property
-	 * @return the default value of the named property
-	 */
-	public String getDefaultString(String name) {
-		String value = defaultProperties.getProperty(name);
-		return (value != null ? value : STRING_DEFAULT_DEFAULT);
-	}
-
-	/**
-	 * Sets the default value for the string-valued property with the
-	 * given name. The given name must not be <code>null</code>. 
-	 * <p>
-	 * Note that the current value of the property is affected if
-	 * the property's current value was its old default value, in which
-	 * case it changes to the new default value. If the property's current
-	 * is different from its old default value, its current value is
-	 * unaffected. No property change events are reported by changing default
-	 * values.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 * @param value the new default value for the property
-	 */
-	public void setDefault(String name, String value) {
-		if (value == null) {
-			throw new IllegalArgumentException();
-		}
-		defaultProperties.put(name, value);
-	}
-
-	/**
-	 * Returns whether the property with the given name has the default value in
-	 * virtue of having no explicitly set value.
-	 * Returns <code>false</code> if the given name is <code>null</code>.
-	 *
-	 * @param name the name of the property, or <code>null</code>
-	 * @return <code>true</code> if the property has no explicitly set value,
-	 * and <code>false</code> otherwise (including the case where the property
-	 * is unknown to this object)
-	 */
-	public boolean isDefault(String name) {
-		return !properties.containsKey(name);
-	}
-
-	/**
-	 * Sets the current value of the property with the given name back
-	 * to its default value. Has no effect if the property does not have
-	 * its own current value. The given name must not be <code>null</code>.
-	 * <p>
-	 * Note that the recommended way of re-initializing a property to the
-	 * appropriate default value is to call <code>setToDefault</code>.
-	 * This is implemented by removing the named value from the object, 
-	 * thereby exposing the default value.
-	 * </p>
-	 * <p>
-	 * A property change event is always reported. In the event
-	 * object, the property name is the name of the property, and the
-	 * old and new values are either strings, or <code>null</code> 
-	 * indicating the default-default value.
-	 * </p>
-	 *
-	 * @param name the name of the property
-	 */
-	public void setToDefault(String name) {
-		Object oldPropertyValue = properties.remove(name);
-		if (oldPropertyValue != null) {
-			dirty = true;
-		}
-		String newValue = defaultProperties.getProperty(name, null);
-		// n.b. newValue == null if there is no default value
-		// can't determine correct default-default without knowing type
-		firePropertyChangeEvent(name, oldPropertyValue, newValue);
-	}
-
-	/**
-	 * Returns a list of all properties known to this preference object which
-	 * have current values other than their default value.
-	 *
-	 * @return an array of property names 
-	 */
-	public String[] propertyNames() {
-		return (String[]) properties.keySet().toArray(EMPTY_STRING_ARRAY);
-	}
-
-	/**
-	 * Returns a list of all properties known to this preference object which
-	 * have an explicit default value set.
-	 *
-	 * @return an array of property names 
-	 */
-	public String[] defaultPropertyNames() {
-		return (String[]) defaultProperties.keySet().toArray(EMPTY_STRING_ARRAY);
-	}
-
-	/**
-	 * Returns whether the current values in this preference object
-	 * require saving.
-	 *
-	 * @return <code>true</code> if at least one of the properties
-	 *  known to this preference object has a current value different from its
-	 *  default value, and <code>false</code> otherwise
-	 */
-	public boolean needsSaving() {
-		return dirty;
-	}
-
-	/**
-	 * Saves the non-default-valued properties known to this preference object to
-	 * the given output stream using 
-	 * <code>Properties.store(OutputStream,String)</code>.
-	 * <p>
-	 * Note that the output is unconditionally written, even when
-	 * <code>needsSaving</code> is <code>false</code>.
-	 * </p>
-	 *
-	 * @param out the output stream 
-	 * @param header a comment to be included in the output, or 
-	 *    <code>null</code> if none
-	 * @exception IOException if there is a problem saving this preference object
-	 * @see Properties#store(OutputStream,String)
-	 */
-	public void store(OutputStream out, String header) throws IOException {
-		properties.store(out, header);
-		dirty = false;
-	}
-
-	/**
-	 * Loads the non-default-valued properties for this preference object from the
-	 * given input stream using 
-	 * <code>java.util.Properties.load(InputStream)</code>. Default property
-	 * values are not affected.
-	 *
-	 * @param in the input stream
-	 * @exception IOException if there is a problem loading this preference
-	 *    object
-	 * @see java.util.Properties#load(InputStream)
-	 */
-	public void load(InputStream in) throws IOException {
-		properties.load(in);
-		dirty = false;
-	}
-}
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/package.html b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/package.html
deleted file mode 100644
index dad4693..0000000
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/runtime/package.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Provides core support for plug-ins and the plug-in registry.
-<h2>
-Package Specification</h2>
-This package specifies the API related to running the platform itself.  This includes 
-area such as the definition and management of plug-ins and the starting, stopping and maintaining the 
-platform itself.  In addition, this API supplies various utility types such as <tt>Path</tt>, 
-<tt>IPath</tt> and various flavours of progress monitors.
-<p>
-Clients writing plug-ins or accessing plug-in functionality will likely be interested in the types
-provided by this package.
-</p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.core.tools/.classpath b/bundles/org.eclipse.core.tools/.classpath
deleted file mode 100644
index 065ac06..0000000
--- a/bundles/org.eclipse.core.tools/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/bundles/org.eclipse.core.tools/.cvsignore b/bundles/org.eclipse.core.tools/.cvsignore
deleted file mode 100644
index 3aa6193..0000000
--- a/bundles/org.eclipse.core.tools/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-bin
-coretools.jar
diff --git a/bundles/org.eclipse.core.tools/.options b/bundles/org.eclipse.core.tools/.options
deleted file mode 100644
index c6784d9..0000000
--- a/bundles/org.eclipse.core.tools/.options
+++ /dev/null
@@ -1,28 +0,0 @@
-#### Monitoring settings
-# monitor class loading
-org.eclipse.osgi/monitor/classes=false
-
-# monitor bundle activation
-org.eclipse.osgi/monitor/activation=false
-
-# monitor resource bundle (*.properties) loading
-org.eclipse.osgi/monitor/resources=false
-
-
-#### Trace settings
-# trace class loading - snapshot the execution stack when a class is loaded
-org.eclipse.osgi/trace/classLoading=false
-
-# trace location - file in which execution traces are written
-org.eclipse.osgi/trace/filename=runtime.traces
-
-# trace filters - Java properties file defining which classes should 
-# be traced (if trace/classLoading is true)
-# File format:
-# plugins=<comma separated list of plugins whose classes to trace>
-# packages=<comma separated list of package prefixes of classes to trace>
-# Note that there may be many 'plugins' and 'packages' lines in one file.
-org.eclipse.osgi/trace/filters=trace.properties
-
-# trace bundle activation - snapshot the execution stack when a bundle is activated
-org.eclipse.osgi/trace/activation=false
diff --git a/bundles/org.eclipse.core.tools/.project b/bundles/org.eclipse.core.tools/.project
deleted file mode 100644
index 4d63ad9..0000000
--- a/bundles/org.eclipse.core.tools/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.core.tools</name>
-	<comment></comment>
-	<projects>
-		<project>org.eclipse.core.boot</project>
-		<project>org.eclipse.core.resources</project>
-		<project>org.eclipse.core.resources.spysupport</project>
-		<project>org.eclipse.core.runtime</project>
-		<project>org.eclipse.core.runtime.compatibility</project>
-		<project>org.eclipse.ui</project>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.core.tools/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.core.tools/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index f3ab745..0000000
--- a/bundles/org.eclipse.core.tools/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Thu May 27 16:37:13 EDT 2004

-encoding/<project>=ISO-8859-1

-eclipse.preferences.version=1

diff --git a/bundles/org.eclipse.core.tools/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.core.tools/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 82269cc..0000000
--- a/bundles/org.eclipse.core.tools/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,6 +0,0 @@
-#Fri Jan 06 16:48:35 EST 2006
-eclipse.preferences.version=1
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=;
-org.eclipse.jdt.ui.ondemandthreshold=3
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return Returns the ${bare_field_name}.\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} The ${bare_field_name} to set.\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\r\n * Copyright (c) ${year} IBM Corporation and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n *\r\n * Contributors\:\r\n *     IBM Corporation - initial API and implementation\r\n ******************************************************************************/\r\n</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @since 3.2\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="New classes and interfaces" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\r\n * Copyright (c) ${year} IBM Corporation and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n * \r\n * Contributors\:\r\n *     IBM Corporation - initial API and implementation\r\n *******************************************************************************/\r\n${filecomment}\r\n${package_declaration}\r\n\r\n/**\r\n * \r\n */\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block&\#13;\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
diff --git a/bundles/org.eclipse.core.tools/META-INF/MANIFEST.MF b/bundles/org.eclipse.core.tools/META-INF/MANIFEST.MF
deleted file mode 100644
index 313bb5e..0000000
--- a/bundles/org.eclipse.core.tools/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,22 +0,0 @@
-Manifest-Version: 1.0
-Bundle-Name: Core Tools
-Bundle-SymbolicName: org.eclipse.core.tools; singleton=true
-Bundle-Version: 1.3.0.qualifier
-Bundle-Activator: org.eclipse.core.tools.CoreToolsPlugin
-Bundle-Vendor: Eclipse.org
-Bundle-Localization: plugin
-Provide-Package: org.eclipse.core.tools,
- org.eclipse.core.tools.runtime,
- org.eclipse.core.tools.metadata
-Require-Bundle: org.eclipse.core.resources;optional=true,
- org.eclipse.core.runtime,
- org.eclipse.jface.text,
- org.eclipse.ui,
- org.eclipse.ui.workbench.texteditor,
- org.eclipse.ui.views,
- org.eclipse.jdt.core,
- org.eclipse.jdt.ui,
- org.eclipse.ltk.core.refactoring,
- org.eclipse.core.filebuffers,
- org.eclipse.ui.ide
-Eclipse-AutoStart: true
diff --git a/bundles/org.eclipse.core.tools/about.html b/bundles/org.eclipse.core.tools/about.html
deleted file mode 100644
index 6f6b96c..0000000
--- a/bundles/org.eclipse.core.tools/about.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<title>About</title>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.tools/about.ini b/bundles/org.eclipse.core.tools/about.ini
deleted file mode 100644
index e521604..0000000
--- a/bundles/org.eclipse.core.tools/about.ini
+++ /dev/null
@@ -1,27 +0,0 @@
-# about.ini

-# contains information about a feature

-# java.io.Properties file (ISO 8859-1 with "\" escapes)

-# "%key" are externalized strings defined in about.properties

-# This file does not need to be translated.

-

-# Property "aboutText" contains blurb for "About" dialog (translated)

-aboutText=%blurb

-

-# Property "windowImage" contains path to window icon (16x16)

-# needed for primary features only

-

-# Property "featureImage" contains path to feature image (32x32)

-featureImage=eclipse32.gif

-

-# Property "aboutImage" contains path to product image (500x330 or 115x164)

-# needed for primary features only

-

-# Property "appName" contains name of the application (translated)

-# needed for primary features only

-

-# Property "welcomePage" contains path to welcome page (special XML-based format)

-#welcomePage=$nl$/welcome.xml

-

-# Property "welcomePerspective" contains the id of the perspective in which the

-# welcome page is to be opened.

-# optional

diff --git a/bundles/org.eclipse.core.tools/about.mappings b/bundles/org.eclipse.core.tools/about.mappings
deleted file mode 100644
index 720ca87..0000000
--- a/bundles/org.eclipse.core.tools/about.mappings
+++ /dev/null
@@ -1,6 +0,0 @@
-# about.mappings

-# contains fill-ins for about.properties

-# java.io.Properties file (ISO 8859-1 with "\" escapes)

-# This file does not need to be translated.

-

-0=@build@
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.tools/about.properties b/bundles/org.eclipse.core.tools/about.properties
deleted file mode 100644
index ae969be..0000000
--- a/bundles/org.eclipse.core.tools/about.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-###############################################################################
-# Copyright (c) 2004 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# about.properties
-# contains externalized strings for about.ini
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# fill-ins are supplied by about.mappings
-# This file should be translated.
-
-blurb=Eclipse Core Tools\n\
-\n\
-Version: 1.0.0\n\
-Build id: {0}\n\
-\n\
-(c) Copyright IBM Corp. and others 2000, 2004.  All rights reserved.\n\
-Visit http://eclipse.org/eclipse/development/performance
-
diff --git a/bundles/org.eclipse.core.tools/build.properties b/bundles/org.eclipse.core.tools/build.properties
deleted file mode 100644
index e84bf48..0000000
--- a/bundles/org.eclipse.core.tools/build.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-###############################################################################
-# Copyright (c) 2004 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-src.includes=*.html
-bin.includes=plugin.xml,icons/,doc/,*.html,.options, META-INF/,.
-qualifier=context
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.tools/cpl-v10.html b/bundles/org.eclipse.core.tools/cpl-v10.html
deleted file mode 100644
index 36aa208..0000000
--- a/bundles/org.eclipse.core.tools/cpl-v10.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<HTML>
-<HEAD>
-<TITLE>Common Public License - v 1.0</TITLE>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" VLINK="#800000">
-
-
-<P ALIGN="CENTER"><B>Common Public License - v 1.0</B>
-<P><B></B><FONT SIZE="3"></FONT>
-<P><FONT SIZE="3"></FONT><FONT SIZE="2">THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT").  ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.</FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"><B>1.  DEFINITIONS</B></FONT>
-<P><FONT SIZE="2">"Contribution" means:</FONT>
-
-<UL><FONT SIZE="2">a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and<BR CLEAR="LEFT">
-b) in the case of each subsequent Contributor:</FONT></UL>
-
-
-<UL><FONT SIZE="2">i)	 	changes to the Program, and</FONT></UL>
-
-
-<UL><FONT SIZE="2">ii)		additions to the Program;</FONT></UL>
-
-
-<UL><FONT SIZE="2">where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.  </FONT><FONT SIZE="2">A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf.  </FONT><FONT SIZE="2">Contributions do not include additions to the Program which:  (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.  </FONT></UL>
-
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">"Contributor" means any person or entity that distributes the Program.</FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.  </FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2">"Program" means the Contributions distributed in accordance with this Agreement.</FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.</FONT>
-<P><FONT SIZE="2"><B></B></FONT>
-<P><FONT SIZE="2"><B>2.  GRANT OF RIGHTS</B></FONT>
-
-<UL><FONT SIZE="2"></FONT><FONT SIZE="2">a)	</FONT><FONT SIZE="2">Subject to the terms of this Agreement, each Contributor hereby grants</FONT><FONT SIZE="2"> Recipient a non-exclusive, worldwide, royalty-free copyright license to</FONT><FONT SIZE="2" COLOR="#FF0000"> </FONT><FONT SIZE="2">reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.</FONT></UL>
-
-
-<UL><FONT SIZE="2"></FONT></UL>
-
-
-<UL><FONT SIZE="2"></FONT><FONT SIZE="2">b) 	Subject to the terms of this Agreement, each Contributor hereby grants </FONT><FONT SIZE="2">Recipient a non-exclusive, worldwide,</FONT><FONT SIZE="2" COLOR="#008000"> </FONT><FONT SIZE="2">royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form.  This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents.  The patent license shall not apply to any other combinations which include the Contribution.  No hardware per se is licensed hereunder.   </FONT></UL>
-
-
-<UL><FONT SIZE="2"></FONT></UL>
-
-
-<UL><FONT SIZE="2">c)	Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity.  Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise.  As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any.  For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.</FONT></UL>
-
-
-<UL><FONT SIZE="2"></FONT></UL>
-
-
-<UL><FONT SIZE="2">d)	Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. </FONT></UL>
-
-
-<UL><FONT SIZE="2"></FONT></UL>
-
-<P><FONT SIZE="2"><B>3.  REQUIREMENTS</B></FONT>
-<P><FONT SIZE="2"><B></B>A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:</FONT>
-
-<UL><FONT SIZE="2">a)	it complies with the terms and conditions of this Agreement; and</FONT></UL>
-
-
-<UL><FONT SIZE="2">b)	its license agreement:</FONT></UL>
-
-
-<UL><FONT SIZE="2">i)	effectively disclaims</FONT><FONT SIZE="2"> on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; </FONT></UL>
-
-
-<UL><FONT SIZE="2">ii) 	effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; </FONT></UL>
-
-
-<UL><FONT SIZE="2">iii)</FONT><FONT SIZE="2">	states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and</FONT></UL>
-
-
-<UL><FONT SIZE="2">iv)	states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.</FONT><FONT SIZE="2" COLOR="#0000FF"> </FONT><FONT SIZE="2" COLOR="#FF0000"></FONT></UL>
-
-
-<UL><FONT SIZE="2" COLOR="#FF0000"></FONT><FONT SIZE="2"></FONT></UL>
-
-<P><FONT SIZE="2">When the Program is made available in source code form:</FONT>
-
-<UL><FONT SIZE="2">a)	it must be made available under this Agreement; and </FONT></UL>
-
-
-<UL><FONT SIZE="2">b)	a copy of this Agreement must be included with each copy of the Program.  </FONT></UL>
-
-<P><FONT SIZE="2"></FONT><FONT SIZE="2" COLOR="#0000FF"><STRIKE></STRIKE></FONT>
-<P><FONT SIZE="2" COLOR="#0000FF"><STRIKE></STRIKE></FONT><FONT SIZE="2">Contributors may not remove or alter any copyright notices contained within the Program.  </FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.  </FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"><B>4.  COMMERCIAL DISTRIBUTION</B></FONT>
-<P><FONT SIZE="2">Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like.  While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors.   Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering.  The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement.  In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations.  The Indemnified Contributor may participate in any such claim at its own expense.</FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">For example, a Contributor might include the Program in a commercial product offering, Product X.  That Contributor is then a Commercial Contributor.  If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.  Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.</FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2" COLOR="#0000FF"></FONT>
-<P><FONT SIZE="2" COLOR="#0000FF"></FONT><FONT SIZE="2"><B>5.  NO WARRANTY</B></FONT>
-<P><FONT SIZE="2">EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is</FONT><FONT SIZE="2"> solely responsible for determining the appropriateness of using and distributing </FONT><FONT SIZE="2">the Program</FONT><FONT SIZE="2"> and assumes all risks associated with its exercise of rights under this Agreement</FONT><FONT SIZE="2">, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, </FONT><FONT SIZE="2">programs or equipment, and unavailability or interruption of operations</FONT><FONT SIZE="2">.  </FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2"><B>6.  DISCLAIMER OF LIABILITY</B></FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2">EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES </FONT><FONT SIZE="2">(INCLUDING WITHOUT LIMITATION LOST PROFITS),</FONT><FONT SIZE="2"> HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"><B>7.  GENERAL</B></FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2">If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.</FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed.  In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. </FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance.  If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable.  However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.  </FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2">Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted  and may only be modified in the following manner. The Agreement Steward reserves the right to </FONT><FONT SIZE="2">publish new versions (including revisions) of this Agreement from time to </FONT><FONT SIZE="2">time. No one other than the Agreement Steward has the right to modify this Agreement. IBM is the initial Agreement Steward.   IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity.  </FONT><FONT SIZE="2">Each new version of the Agreement will be given a distinguishing version number.  The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new </FONT><FONT SIZE="2">version.  </FONT><FONT SIZE="2">Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, </FONT><FONT SIZE="2">by implication, estoppel or otherwise</FONT><FONT SIZE="2">.</FONT><FONT SIZE="2">  All rights in the Program not expressly granted under this Agreement are reserved.</FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose.  Each party waives its rights to a jury trial in any resulting litigation.</FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT>
-
-</BODY>
-
-</HTML>
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.tools/doc/hglegal2002.htm b/bundles/org.eclipse.core.tools/doc/hglegal2002.htm
deleted file mode 100644
index 5df454d..0000000
--- a/bundles/org.eclipse.core.tools/doc/hglegal2002.htm
+++ /dev/null
@@ -1,14 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-   <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
-   <title>Legal Notices</title>
-</head>
-<body>
-
-<h3>
-<a NAME="Notices"></a>Notices</h3>
-(c) Copyright IBM Corp. 2000, 2002. All Rights Reserved.
-</body>
-</html>
diff --git a/bundles/org.eclipse.core.tools/doc/ngibmcpy2002.gif b/bundles/org.eclipse.core.tools/doc/ngibmcpy2002.gif
deleted file mode 100644
index 61cef48..0000000
--- a/bundles/org.eclipse.core.tools/doc/ngibmcpy2002.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.core.tools/doc/readme.html b/bundles/org.eclipse.core.tools/doc/readme.html
deleted file mode 100644
index bd66ee6..0000000
--- a/bundles/org.eclipse.core.tools/doc/readme.html
+++ /dev/null
@@ -1,246 +0,0 @@
-<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-  <title>Core Tools Readme</title>
-</head>
-
-<body>
-<h2 align="center">Core Tools</h2>
-<h3>Introduction</h3>
-
-  
-<p>Core Tools is a set of views and perspectives useful for people writing Eclipse 
-  plugins or just wanting to know what is going on under the covers. Roughly speaking 
-  there are three kinds of tools:</p>
-<dl> 
-  <dt><b>Runtime tools</b></dt>
-  <dd>The runtime tools expose the internal behaviour of the Platform runtime 
-    as well as certain aspects of plugins (activation ordering, classes loaded, 
-    relation to other plugins, ...) and classes (load order, load nesting, ...). 
-    Plugin developers can use this information to ensure that their plugins/classes 
-    are being activated/loaded as expected, and that they are not taking more 
-    time/space than is warranted.</dd>
-  <dt><b>Resources tools</b></dt>
-  <dd>The resources tools expose the behaviour/performance of installed builders 
-    and listeners as well as the structure of the workspace, resources and resource 
-    deltas.</dd>
-  <dt><b>Metadata tools</b></dt>
-  <dd>The metadata tools enable users to investigate the metadata files used in 
-    Eclipse. Point these tools at a metadata location and browse...</dd>
-</dl>
-
-  
-<h3>Installing and Running Core Tools</h3> 
-
-<h4>Installing Core Tools</h4>
-<p>If you are running on Eclipse 3.*, get org.eclipse.core.tools.zip and extract 
-  all files into the &lt;eclipse install&gt;/plugins directory. This will a add 
-  the Core Tools plugins and fragments to your install. Use Core Tools version 
-  1.1.0 for Eclipse 3.0.*, and Core Tools 1.2 for Eclipse 3.1 from M5a on.</p>
-<p>For running on Eclipse 2.1.* or earlier, the Core Tools comes in two parts; 
-  the tools themselves and some patches for the boot, runtime and resources plugins. 
-  To install:</p>
-<ol>
-  <li>To install the Core Tools, get org.eclipse.core.tools.zip and extract all 
-    files into the &lt;eclipse install&gt;/plugins directory. This will a add 
-    the Core Tools plugins and fragments to your install. 
-    Use Core Tools version 1.0.0 for Eclipse builds prior to I20030128, and
-  Core Tools 1.0.1 for all builds after that (including the 2.1 release).</li>
-  <li>If you are running an Eclipse build from before I20021127 (this includes 
-    2.0.*) you will need to get the patched versions of the boot, runtime and 
-    resources plugins. Get core-tools-patches.zip and extract all files into your 
-    &lt;eclipse install&gt;/plugins directory. This will overwrite boot.jar, runtime.jar 
-    and resources.jar. Note that if your install has version numbers in the plug-in 
-    directory names, you have to manually copy/extract the patch files into the 
-    corresponding versioned plug-in directory in your install.</li>
-</ol>
-<h4>Running Core Tools</h4>
-<p>After installing the Core Tools, you must enable them. The tools are enabled 
-  using Eclipse's debug options mechanism. To run Eclipse in &quot;debug&quot; 
-  mode, use the -debug command line option. If nothing else is said, Eclipse will 
-  look for the file &lt;eclipse install&gt;/.options. This is a Java properties 
-  file detailing which debug options should be enabled etc. See the Eclipse runtime 
-  documentation for more details. </p>
-<p>The org.eclipse.core.tools plugin contains an example .options file which enables 
-  all options (except class load trace filters). To run Eclipse with the Core 
-  Tools, either copy this file to your &lt;eclipse install&gt; directory or identify 
-  it on the command line after -debug. For example, </p>
-<pre>    eclipse -debug file:d:/.options</pre>
-<p>Note that not all tools require enablement. You need only enable the debug 
-  options required by the tools you choose to use. See the tool descriptions for 
-  details.</p>
-<p>If you are using PDE's runtime workbench then you can enable tracing and set 
-  the appropriate options for the target workspace. See PDE Guide -&gt; Running 
-  a plug-in -&gt; Running with tracing found in the standard Eclipse documentation 
-  set for more information.</p>
-<p>Once you are running with the Core Tools installed, there are a number of new 
-  perspectives and views. These are accessed by opening a new perspective or using 
-  the Window-&gt;Show View functions in the workbench.</p>
-<h3>Runtime Tools</h3> 
-
- 
-<p>The runtime tooling contributes a Runtime Spy and Plugin Dependency perspectives. 
-  Note that in some cases the views can be combined or used in other contexts. 
-  The individual views are accessed via the Workspace-&gt;Show View-&gt;Runtime 
-  Tools menu.</p>
-<h4>Runtime Spy Perspective</h4>
-<p>The Runtime Spy perspective shows information about the plugin activation, 
-  class loading, resource bundles etc. It is extremely useful when trying to track 
-  down why plugins are being activated or classes loaded as well as getting a 
-  handle on how much code is loaded. This tool contains four views: </p>
-<dl> 
-  <dt><b>Activated Plugins</b> </dt>
-  <dd>This is the list of plugins which have been activated since the start of 
-    this Eclipse session. Included is total code footprint, startup time, activation 
-    order as well as the number of classes loaded for each plugin.<br>
-    When plugins are activated a snapshot of the execution stack is taken. This 
-    stack trace can be viewed by selecting plugin and clicking on the stack trace 
-    'T' button on the title bar or in the context menu.<br>
-    The classes loaded by the selected plugins is shown in the Loaded Classes 
-    view when the &quot;Classes&quot; button ('C') on the menu bar or context 
-    menu is used.<br>
-    Note that this list is not automatically updated when a new plugin is activated 
-    so users should use the refresh button on the view title bar or in the context 
-    menu.</dd>
-  <dt><b>Loaded Classes</b> </dt>
-  <dd>This view is populated with classes loaded by plugins selected in the Activated 
-    Plugins view. For each class data such as load order and memory footprint 
-    are listed. If the appropriate filtering is enabled when the platform is started 
-    (see below), stack snapshots taken at class loading time are available by 
-    selecting a class and using the Stack Trace menu entry or title bar button.</dd>
-  <dt><b>Plugin Datasheet</b> </dt>
-  <dd>Shows a summary of the currently selected plugin.</dd>
-  <dt><b>Stack Trace</b> </dt>
-  <dd>Shows a snapshot of the execution stack at the time of some event (e.g., 
-    plugin activation, class loading).</dd>
-</dl>
-<p>The following debug options control what data is available in Runtime Spy perspective 
-  views.</p>
-<dl>
-  <dt>org.eclipse.osgi/monitor/classes=&lt;boolean&gt;</dt>
-  <dd>Whether or not to monitor which classes are loaded.</dd>
-  <dt>org.eclipse.osgi/monitor/activation=&lt;boolean&gt;</dt>
-  <dd>Whether or not to monitor which plugins are activated.</dd>
-  <dt>org.eclipse.osgi/monitor/resources=&lt;boolean&gt;</dt>
-  <dd>Whether or not to monitor which resource bundles (i.e., *.properties files 
-    ) are loaded</dd>
-  <dt>org.eclipse.osgi/trace/classLoading=&lt;boolean&gt;</dt>
-  <dd>Whether or not to snapshot the execution stack when a class is loaded</dd>
-  <dt>org.eclipse.osgi/trace/filename=&lt;file location&gt;</dt>
-  <dd>The file in which execution traces are written</dd>
-  <dt>org.eclipse.osgi/trace/filters=&lt;properties file&gt;</dt>
-  <dd>The location of a Java properties file identifying the classes which should 
-    be traced (if trace/classLoading is true). The File format is: <br>
-    plugins=&lt;comma separated list of plugins whose classes to trace&gt;<br>
-    packages=&lt;comma separated list of package prefixes of classes to trace&gt;<br>
-    Note that there may be many 'plugins' and 'packages' lines in one file.</dd>
-  <dt>org.eclipse.osgi/trace/activation=&lt;boolean&gt;</dt>
-  <dd>Whether or not to snapshot the execution stack when a plugin is activated.<br>
-  </dd>
-</dl>
-<h4>Plug-In Dependency Perspective</h4>
-<p>This perspective includes 2 views: a plug-in list view listing all the plug-ins 
-  available in the workspace and a plug-in dependency view. The plug-in ids in 
-  the list view are given in alphabetical order (according to their plug-in id). 
-  Select a plug-in in the list view and the dependency view is updated to show 
-  all plug-ins that the selected plug-in requires as well as all plug-ins that 
-  require this selected plug-in. This information is currently only presented 
-  in a text format.</p>
-<h3>Resources Tools</h3>
-<p>The Resources tooling consists of a number of views described below. These 
-  are accessed via the Workspace-&gt;Show View-&gt;Resources Tools menu and can 
-  be used independently or together to as desired. </p>
-<h4>Resource Spy view</h4>
-This view shows detailed public/internal information about the resource currently 
-selected in any Eclipse view (e.g. Resource Navigator, Package Explorer, etc). 
-It shows details about: flags, markers, synchronization information, session/persistent 
-properties, content type). 
-<h4>Delta Spy View</h4>
-The Delta Spy listens for any resource changes, echoing the resource delta for 
-each change event listened. For each affected resource (and its child resources), 
-it shows the following information: 
-<ul>
-  <li>the resource's full path;</li>
-  <li>the kind of change (between brackets): addition (+), phantom addition (&gt;), 
-    removal (-), phantom removal (&lt;), change (*), no change (~), and unknown 
-    (?);</li>
-  <li>the change flags (between curly braces): CONTENT, MOVED_FROM, MOVED_TO, 
-    OPEN, TYPE, SYNC, MARKERS, REPLACED, DESCRIPTION;</li>
-  <li>in the case it is a marker change, it will show (between brackets) for each 
-    marker changed: 
-    <ul>
-      <li>the kind of marker change: addition (+), removal (-), change (*);</li>
-      <li>the marker's id;</li>
-    </ul>
-  </li>
-  <li>if it is a team private change, a "(team private)" tag.</li>
-</ul>
-<h4>Graphical Delta Spy View</h4>
-<p>The Graphical Delta Spy is similar to the Delta Spy describe above, but it 
-  shows the resource delta tree using a tree widget instead of indented text. 
-  This view can only show the resource delta tree for the last resource change 
-  event only. However, it is easier to visualize a resource delta tree due to 
-  its graphical nature.</p>
-<p>The Graphical Delta Spy view provides a pull-down menu that allows the user 
-  to select which types of events to listen to (PRE_BUILD, POST_BUILD, POST_CHANGE) 
-  and whether phantom resources should be taken into account..</p>
-<h4>Builders/Listeners Spy</h4>
-<p>The Builders/Listeners Spy view displays statistical information about the 
-  behaviour and performance of installed builders and resource change listeners. 
-  The information includes:</p>
-<ul>
-  <li>the name of builder/listener (listeners do not technically have names so 
-    their toString() is used)</li>
-  <li>the project related to the builder (blank for listeners)</li>
-  <li>the number of events (builds or resource changed) processed by the builder/listener</li>
-  <li>the amount of time spent processing these events</li>
-  <li>the number of core exceptions encountered</li>
-</ul>
-<p>For more informatioin on listeners see the Eclipse article &quot;How You've 
-  Changed! Responding to resource changes in the Eclipse workspace&quot; by John 
-  Arthorne (OTI) August 23, 2002. Documentation on builders can be found in the 
-  Platform Plug-in Developer Guide included with the Eclipse documentation.</p>
-<p>The following debug options control what data is available in Builder/Listener 
-  Spy view.</p>
-<dl> 
-  <dt>org.eclipse.core.resources/monitor/builders=&lt;boolean&gt;</dt>
-  <dd>Whether or not to monitor which builders.</dd>
-  <dt>org.eclipse.core.resources/monitor/listeners=&lt;boolean&gt;</dt>
-  <dd>Whether or not to monitor which listeners.</dd>
-</dl>
-<h3>Metadata Tools</h3>
-<p>The metadata tooling contributes a Metadata perspective. The individual views 
-  are not particularly useful on their own but are accessed via the Window-&gt;Show 
-  View-&gt;Metadata Tools menu.</p>
-<h4>The Metadata Perspective</h4>
-This perspective contains three views which allows the user to select a directory, 
-browse any metadata found in it and see contents and integrity status of supported 
-files. 
-<dl> 
-  <dt><b>Metadata Spy</b></dt>
-  <dd>This view allows the user to select a given metadata directory and uses 
-    a tree view to show a directory hierarchy containing all known metadata files 
-    as leaf nodes. If the user double-clicks one of these leaf nodes, the Dump 
-    Contents view will be opened having this file as its current selected file. 
-  </dd>
-  <dt><b>Dump Contents</b></dt>
-  <dd>This view presents to the user the contents of a selected metadata file 
-    in a human-readable format. It provides an action for selecting a new file 
-    to dump. The contents layout will depend on what kind of file is being dumped. 
-    This view has a sub-view called &quot;Dump Summary&quot; that shows whether 
-    the file read was ok or not. </dd>
-  <dt><b>Dump Summary</b></dt>
-  <dd>This view presents to the user the results of a file dumped using the Dump 
-    Contents view. In the case of a error during the dumping process (because 
-    the metadata file being dumped was corrupted), the reason will be shown here, 
-    along with the number of bytes read. This view will only be updated if it 
-    is open when a file is being dumped. </dd>
-</dl>
-<p>Note: the dumping functionality is also available as a headless Eclipse application: 
-  <tt>org.eclipse.core.tools.dumptool</tt>. To run it, you need to pass the file 
-  to be dumped using the <tt>dump.file</tt> system property. For instance:</p>
-<pre>eclipse -application org.eclipse.core.tools.dumptool -vmargs -Ddump.file=d:\eclipse\configuration\org.eclipse.osgi\.state</pre>
-<h4><a href="hglegal2002.htm"><img SRC="ngibmcpy2002.gif" ALT="Copyright IBM Corporation and others 2000, 2002.  All Rights Reserved." BORDER=0 height=14 width=324></a></h4>
-  </body>
-</html>
diff --git a/bundles/org.eclipse.core.tools/icons/classes.gif b/bundles/org.eclipse.core.tools/icons/classes.gif
deleted file mode 100644
index 4fa0940..0000000
--- a/bundles/org.eclipse.core.tools/icons/classes.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.core.tools/icons/clear.gif b/bundles/org.eclipse.core.tools/icons/clear.gif
deleted file mode 100644
index 2558326..0000000
--- a/bundles/org.eclipse.core.tools/icons/clear.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.core.tools/icons/collapseall.gif b/bundles/org.eclipse.core.tools/icons/collapseall.gif
deleted file mode 100644
index 0bae56c..0000000
--- a/bundles/org.eclipse.core.tools/icons/collapseall.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.core.tools/icons/datasheet.gif b/bundles/org.eclipse.core.tools/icons/datasheet.gif
deleted file mode 100644
index ec0cba1..0000000
--- a/bundles/org.eclipse.core.tools/icons/datasheet.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.core.tools/icons/plugin.gif b/bundles/org.eclipse.core.tools/icons/plugin.gif
deleted file mode 100644
index 8a87648..0000000
--- a/bundles/org.eclipse.core.tools/icons/plugin.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.core.tools/icons/refresh.gif b/bundles/org.eclipse.core.tools/icons/refresh.gif
deleted file mode 100644
index a063c23..0000000
--- a/bundles/org.eclipse.core.tools/icons/refresh.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.core.tools/icons/req_plugins_obj.gif b/bundles/org.eclipse.core.tools/icons/req_plugins_obj.gif
deleted file mode 100644
index 689f522..0000000
--- a/bundles/org.eclipse.core.tools/icons/req_plugins_obj.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.core.tools/icons/reset.gif b/bundles/org.eclipse.core.tools/icons/reset.gif
deleted file mode 100644
index 8d50500..0000000
--- a/bundles/org.eclipse.core.tools/icons/reset.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.core.tools/icons/spy.gif b/bundles/org.eclipse.core.tools/icons/spy.gif
deleted file mode 100644
index ce3fc51..0000000
--- a/bundles/org.eclipse.core.tools/icons/spy.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.core.tools/icons/trace.gif b/bundles/org.eclipse.core.tools/icons/trace.gif
deleted file mode 100644
index 34027a5..0000000
--- a/bundles/org.eclipse.core.tools/icons/trace.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.core.tools/icons/zoom.gif b/bundles/org.eclipse.core.tools/icons/zoom.gif
deleted file mode 100644
index 3c10582..0000000
--- a/bundles/org.eclipse.core.tools/icons/zoom.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.core.tools/plugin.xml b/bundles/org.eclipse.core.tools/plugin.xml
deleted file mode 100644
index 0cc47e7..0000000
--- a/bundles/org.eclipse.core.tools/plugin.xml
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin>
-
-   <extension-point id="metadataDumpers" name="Metadata Dumpers"/>
-   
-<!-- Metadata dumpers -->
-   <extension point="org.eclipse.core.tools.metadataDumpers">
-      <dumper file-name=".state" class="org.eclipse.core.tools.metadata.StateDumper"/>
-   </extension>
-   
-<!-- The DumpTool headless application -->
-   <extension point="org.eclipse.core.runtime.applications" id="dumptool">
-    <application> 
-      <run class="org.eclipse.core.tools.metadata.DumpTool"/>
-    </application>
-   </extension>   
-   
-
-<!--  Perspectives -->
-   <extension
-         point="org.eclipse.ui.perspectives">
-      <perspective
-            name="Plug-in Dependency"
-            icon="icons/req_plugins_obj.gif"
-            class="org.eclipse.core.tools.runtime.PluginDependencyPerspective"
-            id="org.eclipse.core.tools.runtime.PluginDependencyPerspective">
-      </perspective>
-   </extension>
-   <extension
-         point="org.eclipse.ui.perspectives">
-      <perspective
-            name="Runtime Spy"
-            icon="icons/zoom.gif"
-            class="org.eclipse.core.tools.runtime.RuntimeSpyPerspective"
-            id="org.eclipse.core.tools.runtime.RuntimeSpyPerspective">
-      </perspective>
-   </extension>
-<!--  Metadata Perspective -->
-   <extension
-         point="org.eclipse.ui.perspectives">
-      <perspective
-            name="Metadata"
-            icon="icons/spy.gif"
-            class="org.eclipse.core.tools.metadata.MetadataPerspective"
-            id="org.eclipse.core.tools.metadata.MetadataPerspective">
-      </perspective>
-   </extension>
-<!-- Metadata Views  -->
-   <extension
-         point="org.eclipse.ui.views">
-      <category
-            name="Metadata Tools"
-            id="org.eclipse.core.tools.metadata">
-      </category>
-      <view
-            name="Dump Contents"
-            icon="icons/spy.gif"
-            category="org.eclipse.core.tools.metadata"
-            class="org.eclipse.core.tools.metadata.DumpContentsView"
-            id="org.eclipse.core.tools.metadata.DumpContentsView">
-      </view>
-      <view
-            name="Dump Summary"
-            icon="icons/spy.gif"
-            category="org.eclipse.core.tools.metadata"
-            class="org.eclipse.core.tools.metadata.DumpSummaryView"
-            id="org.eclipse.core.tools.metadata.DumpSummaryView">
-      </view>
-      <view
-            name="Metadata Spy"
-            icon="icons/spy.gif"
-            category="org.eclipse.core.tools.metadata"
-            class="org.eclipse.core.tools.metadata.MetadataTreeView"
-            id="org.eclipse.core.tools.metadata.MetadataTreeView">
-      </view>
-   </extension>   
-<!-- Runtime Views -->
-   <extension point="org.eclipse.ui.views">
-      <category name="Runtime Tools" id="org.eclipse.core.tools.runtime"/>
-      <view
-            name="Activated Plug-ins"
-            icon="icons/plugin.gif"
-            category="org.eclipse.core.tools.runtime"
-            class="org.eclipse.core.tools.runtime.ActivePluginsView"
-            id="org.eclipse.core.tools.runtime.ActivePluginsView"/>
-      <view
-            name="Loaded Classes"
-            icon="icons/classes.gif"
-            category="org.eclipse.core.tools.runtime"
-            class="org.eclipse.core.tools.runtime.LoadedClassesView"
-            id="org.eclipse.core.tools.runtime.LoadedClassesView"/>
-      <view
-            name="Plug-in Datasheet"
-            icon="icons/datasheet.gif"
-            category="org.eclipse.core.tools.runtime"
-            class="org.eclipse.core.tools.runtime.PluginDataSheetView"
-            id="org.eclipse.core.tools.runtime.PluginDataSheetView"/>
-      <view
-            name="Stack Trace"
-            icon="icons/trace.gif"
-            category="org.eclipse.core.tools.runtime"
-            class="org.eclipse.core.tools.runtime.StackTraceView"
-            id="org.eclipse.core.tools.runtime.StackTraceView"/>
-      <view
-            name="Plug-in Dependency Spy"
-            icon="icons/spy.gif"
-            category="org.eclipse.core.tools.runtime"
-            class="org.eclipse.core.tools.runtime.PluginDependencyView"
-            id="org.eclipse.core.tools.runtime.PluginDependencyView"/>
-      <view
-            name="Plug-in List Spy"
-            icon="icons/spy.gif"
-            category="org.eclipse.core.tools.runtime"
-            class="org.eclipse.core.tools.runtime.PluginListView"
-            id="org.eclipse.core.tools.runtime.PluginListView"/>
-      <view
-            name="Preferences Spy"
-            icon="icons/spy.gif"
-            category="org.eclipse.core.tools.runtime"
-            class="org.eclipse.core.tools.runtime.EclipsePreferencesView"
-            id="org.eclipse.core.tools.runtime.EclipsePreferencesView"/>
-      <view
-            name="Preference Stats Spy"
-            icon="icons/spy.gif"
-            category="org.eclipse.core.tools.runtime"
-            class="org.eclipse.core.tools.runtime.PreferenceStatsView"
-            id="org.eclipse.core.tools.runtime.PreferenceStatsView"/>
-      <view
-            name="Content Types"
-            icon="icons/spy.gif"
-            category="org.eclipse.core.tools.runtime"
-            class="org.eclipse.core.tools.runtime.ContentTypeView"
-            id="org.eclipse.core.tools.runtime.ContentTypeView"/>            
-      <view
-            name="Event Spy"
-            icon="icons/spy.gif"
-            category="org.eclipse.core.tools.runtime"
-            class="org.eclipse.core.tools.runtime.EventsView"
-            id="org.eclipse.core.tools.runtime.EventsView"/>
-   </extension>
-   	<extension
-         point="org.eclipse.ui.popupMenus">
-      <objectContribution
-            adaptable="true"
-            id="org.eclipse.core.tools.nls.testing.contribution"
-            objectClass="org.eclipse.jdt.core.ICompilationUnit">
-         <action
-               label="Convert to NLS Messages"
-               class="org.eclipse.core.tools.nls.ConvertMessageBundleAction"
-               menubarPath="additions"
-               enablesFor="1"
-               id="org.eclipse.core.tools.nls.ConvertMessageBundleAction">
-         </action>
-         <action
-               label="Remove Unused Messages"
-               class="org.eclipse.core.tools.nls.RemoveUnusedMessagesAction"
-               menubarPath="additions"
-               enablesFor="1"
-               id="org.eclipse.core.tools.nls.RemoveUnusedMessagesAction">
-         </action>
-      </objectContribution>
-      <objectContribution
-            adaptable="true"
-            id="org.eclipse.core.tools.contribution2"
-            objectClass="org.eclipse.jdt.core.IJavaElement">
-         <action
-               label="Find Unreferenced Members"
-               class="org.eclipse.core.tools.search.FindUnusedMembersAction"
-               menubarPath="additions"
-               enablesFor="*"
-               id="org.eclipse.core.tools.search.FindUnusedMembersAction">
-         </action>
-      </objectContribution>
-   </extension>
-</plugin>
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/AbstractCopySelectionAction.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/AbstractCopySelectionAction.java
deleted file mode 100644
index b0686a0..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/AbstractCopySelectionAction.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools;
-
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.swt.dnd.*;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.actions.ActionFactory;
-
-/**
- * A base abstract implementation for "copy selection" actions.
- */
-
-public abstract class AbstractCopySelectionAction extends GlobalAction {
-
-	/**
-	 * The selection provider.
-	 */
-	protected ISelectionProvider selectionProvider;
-
-	/**
-	 * Sets action's text and tool tip text.
-	 * 
-	 * @param selectionProvider the selection provider
-	 */
-	public AbstractCopySelectionAction(ISelectionProvider selectionProvider) {
-		super("&Copy"); //$NON-NLS-1$
-		this.selectionProvider = selectionProvider;
-	}
-
-	/**
-	 * Copies the currently selected contents to the clipboard. The meaning of the 
-	 * currently selected contents is defined by overriding the getContents() 
-	 * method.
-	 * 
-	 * @see org.eclipse.jface.action.IAction#run()
-	 */
-	public void run() {
-		// puts that content in the clipboard
-		Clipboard clipboard = new Clipboard(Display.getCurrent());
-		clipboard.setContents(new Object[] {getContents()}, new Transfer[] {TextTransfer.getInstance()});
-		clipboard.dispose();
-	}
-
-	/**
-	 * Registers this action as a global action handler.
-	 * 
-	 * @param actionBars the action bars where this action will be registered.
-	 * @see org.eclipse.core.tools.GlobalAction#registerAsGlobalAction(
-	 * org.eclipse.ui.IActionBars)
-	 */
-	public void registerAsGlobalAction(IActionBars actionBars) {
-		actionBars.setGlobalActionHandler(ActionFactory.COPY.getId(), this);
-	}
-
-	/**
-	 * Returns the currently selected contents as a String object.
-	 * 
-	 * @return the selected contents as string.
-	 */
-	protected abstract String getContents();
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/AbstractTreeContentProvider.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/AbstractTreeContentProvider.java
deleted file mode 100644
index cfc005d..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/AbstractTreeContentProvider.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools;
-
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-
-/**
- * An abstract base class for hierarchical content providers. Uses  
- * <code>TreeContentProviderNode</code> objects to keep a hierarchical
- * data model. Subclasses must provide an implementation for the 
- * <code>#rebuild(Object)</code> operation in order to define how the data model
- * will be built upon a given input provided by the viewer. 
- */
-
-public abstract class AbstractTreeContentProvider implements ITreeContentProvider {
-
-	/**
-	 * Flag for omitting the root or not when providing the contents. 
-	 */
-	private boolean omitRoot;
-
-	/**
-	 * The root node.
-	 */
-	private TreeContentProviderNode rootNode;
-
-	/**
-	 * Constructs a AbstractTreeContentProvider. 
-	 *
-	 * @param omitRoot if true, the root node will be omitted when providing 
-	 * contents. 
-	 */
-	protected AbstractTreeContentProvider(boolean omitRoot) {
-		this.omitRoot = omitRoot;
-	}
-
-	/**
-	 * Constructs a AbstractTreeContentProvider that will omit the root node when 
-	 * providing contents.
-	 * 
-	 * @see #AbstractTreeContentProvider(boolean)
-	 */
-	protected AbstractTreeContentProvider() {
-		this(true);
-	}
-
-	/**
-	 * Returns the child elements of the given parent element.
-	 * 
-	 * @return an array containing <code>parentElement</code>'s children.  
-	 * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(
-	 * java.lang.Object)
-	 * @see org.eclipse.core.tools.TreeContentProviderNode#getChildren() 
-	 */
-	public Object[] getChildren(Object parentElement) {
-		if (!(parentElement instanceof TreeContentProviderNode))
-			return null;
-
-		TreeContentProviderNode treeNode = (TreeContentProviderNode) parentElement;
-		return treeNode.getChildren();
-	}
-
-	/**
-	 * Returns the parent for the given element, or <code>null</code> 
-	 * indicating that the parent can't be computed. 
-	 *
-	 * @return <coded>element</code>'s parent node or null, if it is a root node 
-	 * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(
-	 * java.lang.Object)
-	 * @see org.eclipse.core.tools.TreeContentProviderNode#getParent()
-	 */
-	public Object getParent(Object element) {
-		if (!(element instanceof TreeContentProviderNode))
-			return null;
-
-		TreeContentProviderNode treeNode = (TreeContentProviderNode) element;
-		return treeNode.getParent();
-	}
-
-	/**
-	 * Returns whether the given element has children.
-	 *
-	 * @return true, if <code>element</code> has children, false otherwise 
-	 * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(
-	 * java.lang.Object)
-	 * @see org.eclipse.core.tools.TreeContentProviderNode#hasChildren() *  
-	 */
-	public boolean hasChildren(Object element) {
-		return element instanceof TreeContentProviderNode && ((TreeContentProviderNode) element).hasChildren();
-	}
-
-	/**
-	 * Returns the elements to display in the viewer 
-	 * when its input is set to the given element. 
-	 * 
-	 * @return this content provider root element's children
-	 * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(
-	 * java.lang.Object)
-	 */
-	public Object[] getElements(Object inputElement) {
-		if (rootNode == null)
-			return new Object[0];
-
-		return omitRoot ? rootNode.getChildren() : new Object[] {rootNode};
-	}
-
-	/**
-	 * Disposes of this content provider.  
-	 * This is called by the viewer when it is disposed.
-	 * 
-	 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
-	 */
-	public void dispose() {
-		rootNode = null;
-	}
-
-	/**
-	 * Helper method that creates a root node given a node name and value.
-	 * 
-	 * @param name the name of the node
-	 * @param value the value of the node. May be null.
-	 * @return the tree node created
-	 * @see TreeContentProviderNode#TreeContentProviderNode(String, Object) 
-	 */
-	protected TreeContentProviderNode createNode(String name, Object value) {
-		return new TreeContentProviderNode(name, value);
-	}
-
-	/**
-	 * Helper method that creates a root node given a node name and no value.
-	 * 
-	 * @param name the name of the node
-	 * @return the tree node created
-	 * @see TreeContentProviderNode#TreeContentProviderNode(String) 
-	 */
-	protected TreeContentProviderNode createNode(String name) {
-		return new TreeContentProviderNode(name);
-	}
-
-	/**
-	 * Notifies this content provider that the given viewer's input
-	 * has been switched to a different element.
-	 * Rebuilds this content provider's state from a given resource.
-	 * 
-	 * @param viewer the viewer
-	 * @param oldInput ignored
-	 * @param input the new input. If null, clears this content provider. If not,
-	 * is passed in a call to <code>rebuild(Object)</code>. 
-	 * @see 
-	 * org.eclipse.jface.viewers.IContentProvider#inputChanged(
-	 * org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
-	 * @see #rebuild(Viewer, Object)
-	 */
-	public void inputChanged(Viewer viewer, Object oldInput, final Object input) {
-		if (input == null) {
-			rootNode = createNode("root"); //$NON-NLS-1$
-			return;
-		}
-
-		if (!acceptInput(input))
-			return;
-
-		rootNode = createNode("root"); //$NON-NLS-1$	    
-		rebuild(viewer, input);
-	}
-
-	/**
-	 * Reconstructs this content provider data model upon the provided input object.
-	 *  
-	 * @param input the new input object - must not be null
-	 * @param viewer the corresponding viewer
-	 */
-	protected abstract void rebuild(Viewer viewer, Object input);
-
-	/**
-	 * Returns true if the provided input is accepted by this content provider.
-	 * 
-	 * @param input an input object
-	 * @return boolean true if the provided object is accepted, false otherwise
-	 */
-	protected abstract boolean acceptInput(Object input);
-
-	/**
-	 * Returns the rootNode.
-	 * 
-	 * @return this content provider root node
-	 */
-	protected TreeContentProviderNode getRootNode() {
-		return rootNode;
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/BaseTextView.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/BaseTextView.java
deleted file mode 100644
index d151dd6..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/BaseTextView.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools;
-
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.text.Document;
-import org.eclipse.jface.text.TextViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.part.ViewPart;
-
-public class BaseTextView extends ViewPart {
-	protected TextViewer viewer;
-
-	public BaseTextView() {
-		super();
-	}
-
-	public void createPartControl(Composite parent) {
-		viewer = new TextViewer(parent, SWT.V_SCROLL | SWT.H_SCROLL | SWT.READ_ONLY);
-		viewer.setDocument(new Document());
-
-		IActionBars bars = getViewSite().getActionBars();
-
-		GlobalAction selectAllAction = new SelectAllAction(viewer);
-		selectAllAction.registerAsGlobalAction(bars);
-
-		GlobalAction copyAction = new CopyTextSelectionAction(viewer);
-		copyAction.registerAsGlobalAction(bars);
-
-		bars.updateActionBars();
-
-		// creates a context menu with actions and adds it to the viewer control
-		MenuManager menuMgr = new MenuManager();
-		menuMgr.add(copyAction);
-		menuMgr.add(selectAllAction);
-		Menu menu = menuMgr.createContextMenu(viewer.getControl());
-		viewer.getControl().setMenu(menu);
-	}
-
-	public void setFocus() {
-		// do nothing
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/ByteUtil.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/ByteUtil.java
deleted file mode 100644
index a8987b8..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/ByteUtil.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools;
-
-/**
- * A set of utility methods for dealing with byte arrays.
- */
-public class ByteUtil {
-
-	/**
-	 * Helper method that creates a string representation for a byte array.
-	 * 
-	 * @param byteArray a byte array to be represented as string
-	 * @param max a maximum number of bytes to be considered - if zero, there is 
-	 * no maximum. 
-	 * @return a byte array string representation
-	 */
-	public static String byteArrayToString(byte[] byteArray, int max) {
-		StringBuffer result = new StringBuffer(byteArray.length * 2 + 2);
-		int bytesToBeShown = (max > 0) ? (Math.min(max, byteArray.length)) : byteArray.length;
-		result.append('[');
-		for (int i = 0; i < bytesToBeShown; i++) {
-			result.append(byteArray[i]);
-			result.append(',');
-		}
-		// adds an ellipsis if there is too much bytes to show
-		if (max > 0 && max < byteArray.length)
-			result.append("..."); //$NON-NLS-1$
-		// or remove the trailing comma
-		else
-			result.deleteCharAt(result.length() - 1);
-		result.append(']');
-		return result.toString();
-	}
-
-	/**
-	 * Calls <code>byteArrayToString()</code> with no limit for array lenght.
-	 * 
-	 * @see #byteArrayToString(byte[], int) 
-	 * @param byteArray the array to be converted to string
-	 * @return a string representation for the array 
-	 */
-	public static String byteArrayToString(byte[] byteArray) {
-		return byteArrayToString(byteArray, 0);
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/ClearTextAction.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/ClearTextAction.java
deleted file mode 100644
index 1d4af80..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/ClearTextAction.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools;
-
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.texteditor.IWorkbenchActionDefinitionIds;
-
-/**
- * Generic "clear contents" action. Sets action's text, tool tip text and icon.
- */
-
-public class ClearTextAction extends GlobalAction {
-
-	/**
-	 * The document on which this action performs its duty.
-	 */
-	private IDocument document;
-
-	/**
-	 * Constructs a ClearTextAction action with the provided document. 
-	 * 
-	 * @param document the document to be cleared when this action is run.
-	 */
-	public ClearTextAction(IDocument document) {
-		super("Cle&ar Contents"); //$NON-NLS-1$
-		this.setToolTipText("Clear contents"); //$NON-NLS-1$
-		this.document = document;
-		// the delete key is not captured by the workbench
-		// then we need to provide an action definition id
-		// so clients can register this action in their key binding services
-		this.setActionDefinitionId(IWorkbenchActionDefinitionIds.DELETE);
-		this.setImageDescriptor(CoreToolsPlugin.createImageDescriptor("clear.gif")); //$NON-NLS-1$
-	}
-
-	/**
-	 * Executes this action (clears associated document's contents).
-	 */
-	public void run() {
-		document.set(""); //$NON-NLS-1$
-	}
-
-	/**
-	 * Registers this action as a global action handler.
-	 * 
-	 * @param actionBars the action bars where this action will be registered.
-	 * @see GlobalAction#registerAsGlobalAction(org.eclipse.ui.IActionBars)
-	 */
-	public void registerAsGlobalAction(IActionBars actionBars) {
-		actionBars.setGlobalActionHandler(ActionFactory.DELETE.getId(), this);
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/CollapseAllAction.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/CollapseAllAction.java
deleted file mode 100644
index 9ec3b24..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/CollapseAllAction.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.TreeViewer;
-
-/**
- * @since 3.0
- */
-public class CollapseAllAction extends Action implements IAction {
-
-	private static final String label = "Collapse All"; //$NON-NLS-1$
-	private static final String imageName = "collapseall.gif"; //$NON-NLS-1$
-	private TreeViewer viewer;
-
-	public CollapseAllAction(TreeViewer viewer) {
-		super(label);
-		this.setToolTipText(label);
-		this.viewer = viewer;
-		this.setImageDescriptor(CoreToolsPlugin.createImageDescriptor(imageName));
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.action.IAction#run()
-	 */
-	public void run() {
-		viewer.collapseAll();
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/CopyStructuredSelectionAction.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/CopyStructuredSelectionAction.java
deleted file mode 100644
index ccd394a..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/CopyStructuredSelectionAction.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools;
-
-import java.util.Iterator;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-
-/**
- * A concrete implementation for <code>AbstractCopySelectionAction</code> that 
- * supports structured selections.
- * 
- * @see org.eclipse.jface.viewers.IStructuredSelection
- */
-public class CopyStructuredSelectionAction extends AbstractCopySelectionAction {
-
-	/** 
-	 * @see org.eclipse.core.tools.AbstractCopySelectionAction#AbstractCopySelectionAction(ISelectionProvider)
-	 */
-	public CopyStructuredSelectionAction(ISelectionProvider selectionProvider) {
-		super(selectionProvider);
-	}
-
-	/**
-	 * Returns the current structured selection as a string object where each 
-	 * node is followed by a line terminator char.  This method depends on the
-	 * toString() method of each node to define a reasonably formatted string
-	 * for display.
-	 * 
-	 * @return a string containing the currently selected elements separated by
-	 * line terminators 
-	 * @see org.eclipse.core.tools.AbstractCopySelectionAction#getContents()
-	 */
-	public String getContents() {
-		// retrieves the selected contents from the selection provider
-		IStructuredSelection selection = (IStructuredSelection) selectionProvider.getSelection();
-		StringBuffer content = new StringBuffer();
-		for (Iterator selectionIter = selection.iterator(); selectionIter.hasNext();) {
-			content.append(selectionIter.next());
-			content.append('\n');
-		}
-		return content.toString();
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/CopyTextSelectionAction.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/CopyTextSelectionAction.java
deleted file mode 100644
index 6e813a1..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/CopyTextSelectionAction.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools;
-
-import org.eclipse.jface.text.ITextSelection;
-import org.eclipse.jface.viewers.ISelectionProvider;
-
-/**
- * A concrete implementation for <code>AbstractCopySelectionAction</code> that 
- * supports text selections.
- * 
- * @see org.eclipse.jface.text.ITextSelection
- */
-public class CopyTextSelectionAction extends AbstractCopySelectionAction {
-
-	/**
-	 * @see AbstractCopySelectionAction#AbstractCopySelectionAction
-	 * (ISelectionProvider)
-	 */
-	public CopyTextSelectionAction(ISelectionProvider selectionProvider) {
-		super(selectionProvider);
-	}
-
-	/**
-	 * Returns the current text selection.
-	 * 
-	 * @return a string containing the currently selected text
-	 * @see org.eclipse.core.tools.AbstractCopySelectionAction#getContents()
-	 */
-	protected String getContents() {
-		return ((ITextSelection) selectionProvider.getSelection()).getText();
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/CoreToolsPlugin.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/CoreToolsPlugin.java
deleted file mode 100644
index 26725ba..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/CoreToolsPlugin.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools;
-
-import java.net.URL;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.internal.stats.ClassloaderStats;
-import org.eclipse.core.runtime.internal.stats.StatsManager;
-import org.eclipse.core.tools.runtime.VMClassInfo;
-import org.eclipse.core.tools.runtime.VMClassloaderInfo;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-public class CoreToolsPlugin extends AbstractUIPlugin {
-	private static CoreToolsPlugin instance;
-	public static String PLUGIN_ID = "org.eclipse.core.tools"; //$NON-NLS-1$
-	private BundleContext context;
-
-	static {
-		if (StatsManager.MONITOR_ACTIVATION)
-			initializeBootClasses();
-	}
-
-	public static CoreToolsPlugin getDefault() {
-		return instance;
-	}
-
-	private static void initializeBootClasses() {
-		if (!VMClassloaderInfo.hasNatives)
-			return;
-		ClassloaderStats loader = ClassloaderStats.getLoader("org.eclipse.osgi"); //$NON-NLS-1$
-		//class loading trace option not enabled
-		if (loader == null)
-			return;
-		VMClassInfo[] classes = VMClassloaderInfo.getBaseClasses();
-		String[] names = new String[classes.length];
-		for (int i = 0; i < classes.length; i++)
-			names[i] = classes[i].getName();
-		loader.addBaseClasses(names);
-	}
-
-	/**
-	 * find an icon - caller must dispose of it
-	 */
-	public static ImageDescriptor createImageDescriptor(String imageName) {
-		URL url = getDefault().getBundle().getEntry("icons/" + imageName); //$NON-NLS-1$
-		if (url != null)
-			return ImageDescriptor.createFromURL(url);
-		return ImageDescriptor.getMissingImageDescriptor();
-	}
-
-	public CoreToolsPlugin() {
-		super();
-		instance = this;
-	}
-
-	public void start(BundleContext bundleContext) throws Exception {
-		super.start(bundleContext);
-		this.context = bundleContext;
-	}
-
-	public BundleContext getContext() {
-		return context;
-	}
-	
-	public void log(String message, Throwable exception) {
-		getLog().log(new Status(IStatus.ERROR, PLUGIN_ID, 0, message, exception));
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/DeepSize.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/DeepSize.java
deleted file mode 100644
index 8c8dbfa..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/DeepSize.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.util.*;
-
-/**
- * How to use DeepSize:
- * DeepSize result= DeepSize.deepSize(anObject);
- * int size= result.getSize(); // accumulated size of transitive closure of anObject
- * Hashtable sizes= result.getSizes(); // hashtable of internal results: class name-> sum of shallowsize of instances of class
- * Hashtable counts= result.getCounts(); // hashtable of internal results: class name -> instances of class
- * Additional function
- * DeepSize d= new DeepSize();
- * d.setIgnoreTypeNames(aSet); // don't consider instances of classes named in aSet as part of the size
- * d.ignore(anObject); // don't consider anObject as part of the size
- * d.deepCompute(anObject); // advanced compute method - computes the size given the additional ignore configuration
- */
-public class DeepSize {
-	/**
-	 * Used as keys to track sets of non-identical objects.
-	 */
-	public static class ObjectWrapper {
-		private Object object;
-
-		public ObjectWrapper(Object object) {
-			this.object = object;
-		}
-
-		public boolean equals(Object o) {
-			if (o.getClass() != ObjectWrapper.class)
-				return false;
-			return object == ((ObjectWrapper) o).object;
-		}
-
-		public int hashCode() {
-			return object == null ? 1 : object.hashCode();
-		}
-
-		public String toString() {
-			return "ObjectWrapper(" + object + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-		}
-	}
-
-	public static final int ARRAY_HEADER_SIZE = 12;
-
-	public static final int HEADER_SIZE = 8;
-	static final HashSet ignoreSet = new HashSet();
-	public static final int OBJECT_HEADER_SIZE = HEADER_SIZE;
-	public static final int POINTER_SIZE = 4;
-	int byteSize;
-	final Map counts = new HashMap();
-
-	Set ignoreTypeNames = null;
-	final Map sizes = new HashMap();
-
-	/**
-	 * Adds an object to the ignore set. Returns true if the object
-	 * has already been ignored previously, and false otherwise.
-	 */
-	public static boolean ignore(Object o) {
-		return !ignoreSet.add(new ObjectWrapper(o));
-	}
-
-	public static void reset() {
-		ignoreSet.clear();
-	}
-
-	private void count(Class c, int size) {
-		Object accumulatedSizes = sizes.get(c);
-		int existingSize = (accumulatedSizes == null) ? 0 : ((Integer) accumulatedSizes).intValue();
-		sizes.put(c, new Integer(existingSize + size));
-
-		Object accumulatedCounts = counts.get(c);
-		int existingCount = (accumulatedCounts == null) ? 0 : ((Integer) accumulatedCounts).intValue();
-		counts.put(c, new Integer(existingCount + 1));
-	}
-
-	public void deepSize(Object o) {
-		byteSize += sizeOf(o);
-	}
-
-	public Map getCounts() {
-		return counts;
-	}
-
-	Set getDefaultIgnoreTypeNames() {
-		Set ignored = new HashSet();
-		String[] ignore = {"org.eclipse.core.runtime.Plugin", "java.lang.ClassLoader", "org.eclipse.team.internal.ccvs.core.CVSTeamProvider", "org.eclipse.core.internal.events.BuilderPersistentInfo", "org.eclipse.core.internal.resources.Workspace", "org.eclipse.core.internal.events.EventStats"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-6$
-		for (int i = 0; i < ignore.length; i++) {
-			ignored.add(ignore[i]);
-		}
-		return ignored;
-	}
-
-	private Object getFieldObject(Field f, Object o) {
-		try {
-			f.setAccessible(true);
-			return f.get(o);
-		} catch (IllegalAccessException e) {
-			throw new Error(e.toString());
-		}
-	}
-
-	public int getSize() {
-		return byteSize;
-	}
-
-	public Map getSizes() {
-		return sizes;
-	}
-
-	private boolean isStaticField(Field f) {
-		return (Modifier.STATIC & f.getModifiers()) != 0;
-	}
-	
-	/**
-	 * Prints a detailed report of memory usage by type to standard output
-	 */
-	public void printSizeReport() {
-		System.out.println("*** Begin DeepSize report ***"); //$NON-NLS-1$
-		for (Iterator it = sizes.keySet().iterator(); it.hasNext();) {
-			Class clazz = (Class) it.next();
-			int size = ((Integer)sizes.get(clazz)).intValue();
-			System.out.println('\t' + clazz.getName() + " size: " + size); //$NON-NLS-1$
-			System.out.println("Total size of all objects: " + getSize()); //$NON-NLS-1$
-		}
-		System.out.println("*** End DeepSize report ***"); //$NON-NLS-1$
-	}
-
-	void setIgnoreTypeNames(Set ignore) {
-		ignoreTypeNames = ignore;
-	}
-
-	private boolean shouldIgnoreType(Class clazz) {
-		if (ignoreTypeNames == null) {
-			ignoreTypeNames = getDefaultIgnoreTypeNames();
-		}
-		while (clazz != null) {
-			if (ignoreTypeNames.contains(clazz.getName()))
-				return true;
-			clazz = clazz.getSuperclass();
-		}
-		return false;
-	}
-
-	private int sizeOf(Object o) {
-		if (o == null)
-			return 0;
-		if (ignore(o))
-			return 0;
-		Class clazz = o.getClass();
-		if (shouldIgnoreType(clazz))
-			return 0;
-		return clazz.isArray() ? sizeOfArray(clazz, o) : sizeOfObject(clazz, o);
-	}
-
-	private int sizeOfArray(Class type, Object array) {
-
-		int size = ARRAY_HEADER_SIZE;
-		Class componentType = type.getComponentType();
-		if (componentType.isPrimitive()) {
-
-			if (componentType == char.class) {
-				char[] a = (char[]) array;
-				size += a.length * 2;
-			} else if (componentType == int.class) {
-				int[] a = (int[]) array;
-				size += a.length * 4;
-			} else if (componentType == byte.class) {
-				byte[] a = (byte[]) array;
-				size += a.length;
-			} else if (componentType == short.class) {
-				short[] a = (short[]) array;
-				size += a.length * 2;
-			} else if (componentType == long.class) {
-				long[] a = (long[]) array;
-				size += a.length * 8;
-			} else {
-				//TODO: primitive arrays
-				System.out.println(componentType);
-			}
-			count(type, size);
-			return size;
-		}
-		Object[] a = (Object[]) array;
-		for (int i = 0; i < a.length; i++) {
-			size += POINTER_SIZE + sizeOf(a[i]);
-		}
-		count(type, ARRAY_HEADER_SIZE + POINTER_SIZE * a.length);
-		return size;
-
-	}
-
-	private int sizeOfObject(Class type, Object o) {
-
-		int internalSize = 0; // size of referenced objects
-		int shallowSize = OBJECT_HEADER_SIZE;
-		Class clazz = type;
-		while (clazz != null) {
-			Field[] fields = clazz.getDeclaredFields();
-			for (int i = 0; i < fields.length; i++) {
-				Field f = fields[i];
-				if (!isStaticField(f)) {
-					Class fieldType = f.getType();
-					if (fieldType.isPrimitive()) {
-						shallowSize += sizeOfPrimitiveField(fieldType);
-					} else {
-						shallowSize += POINTER_SIZE;
-						internalSize += sizeOf(getFieldObject(f, o));
-					}
-				}
-			}
-			clazz = clazz.getSuperclass();
-		}
-		count(type, shallowSize);
-		return shallowSize + internalSize;
-
-	}
-
-	private int sizeOfPrimitiveField(Class type) {
-		if (type == long.class || type == double.class)
-			return 8;
-		return 4;
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/ErrorUtil.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/ErrorUtil.java
deleted file mode 100644
index 72b3116..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/ErrorUtil.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * A helper class that supports error report and logging for 
- * Spy plug-in classes. 
- */
-public class ErrorUtil {
-
-	/**
-	 * Logs the provided exception and user message in Spy plug-in's log.
-	 * 
-	 * @param exception the exception to be logged
-	 * @param userMessage an optional  higher-level explanation for the exception
-	 */
-	public static void logException(Exception exception, String userMessage) {
-		String pluginID = CoreToolsPlugin.PLUGIN_ID;
-		if (userMessage == null)
-			userMessage = exception.getMessage();
-		IStatus status = new Status(IStatus.ERROR, pluginID, -1, userMessage, exception);
-		CoreToolsPlugin.getDefault().getLog().log(status);
-	}
-
-	/**
-	 * Shows the provided message using a MessageDialog.
-	 * 
-	 * @param message
-	 * @param title
-	 * @see org.eclipse.jface.dialogs.MessageDialog#openError(Shell,String,String)
-	 */
-	public static void showErrorMessage(String message, String title) {
-		Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
-		if (title == null)
-			title = "Error in Spy plug-in"; //$NON-NLS-1$
-		MessageDialog.openError(shell, title, message);
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/GlobalAction.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/GlobalAction.java
deleted file mode 100644
index f3e66e8..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/GlobalAction.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.ui.IActionBars;
-
-/**
- * An abstract base class for global actions. Global actions
- * are able to register themselves in a view's action bars. 
- */
-public abstract class GlobalAction extends Action {
-	/**
-	 * Constructs an action.
-	 * 
-	 * @param text the action description
-	 */
-	GlobalAction(String text) {
-		super(text);
-		setToolTipText(text);
-	}
-
-	/**
-	 * Registers this action as a global action handler.
-	 * 
-	 * @param actionBars the action bars where this action will be registered.
-	 * @see IActionBars#updateActionBars()
-	 */
-	public abstract void registerAsGlobalAction(IActionBars actionBars);
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/IFlattable.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/IFlattable.java
deleted file mode 100644
index b3c812b..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/IFlattable.java
+++ /dev/null
@@ -1,18 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools;
-
-/**
- * Interface indicating if a view (normally a tree) support a flat display
- */
-public interface IFlattable {
-	public void setFlat(boolean mode);
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/ISorter.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/ISorter.java
deleted file mode 100644
index 9541980..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/ISorter.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools;
-
-public interface ISorter {
-	public boolean isReversed();
-
-	public void setReversed(boolean value);
-
-	public int getColumnNumber();
-
-	public int states();
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/ITreeNodeVisitor.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/ITreeNodeVisitor.java
deleted file mode 100644
index 148f2ea..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/ITreeNodeVisitor.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools;
-
-/** 
- * This interface is implemented by objects that visit trees made of
- * <code>TreeContentProviderNode</code> objects.
- *
- * @see org.eclipse.core.tools.TreeContentProviderNode#accept(ITreeNodeVisitor)
- */
-public interface ITreeNodeVisitor {
-	/** 
-	 * Visits the given node.
-	 *
-	 * @param node the node to visit
-	 * @return <code>true</code> if the node's child nodes  should  be visited;
-	 * <code>false</code> if they should be skipped
-	 */
-	public boolean visit(TreeContentProviderNode node);
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/Messages.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/Messages.java
deleted file mode 100644
index 17e819b..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/Messages.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2005 IBM Corporation and others. All rights reserved.   This
- * program and the accompanying materials are made available under the terms of
- * the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: 
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.core.tools;
-
-import org.eclipse.osgi.util.NLS;
-
-public class Messages extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.core.tools.messages";//$NON-NLS-1$
-
-	// Stats View
-	public static String stats_eventHeader;
-	public static String stats_blameHeader;
-	public static String stats_contextHeader;
-	public static String stats_countHeader;
-	public static String stats_timeHeader;
-
-	public static String stats_badStat;
-	public static String stats_badColumn;
-	public static String stats_pluginid;
-
-	// Resource Spy
-	public static String resource_error_unknown_resource_impl;
-
-	public static String resource_file;
-	public static String resource_folder;
-	public static String resource_project;
-	public static String resource_root;
-	public static String resource_full_path;
-	public static String resource_content_id;
-	public static String resource_type;
-	public static String resource_node_id;
-	public static String resource_local_sync_info;
-
-	public static String resource_persistent_properties;
-	public static String resource_error_stored_properties;
-
-	public static String resource_session_properties;
-
-	public static String resource_flags;
-	public static String resource_open;
-	public static String resource_local_exists;
-	public static String resource_phantom;
-	public static String resource_used;
-	public static String resource_derived;
-	public static String resource_team_private;
-	public static String resource_markers_snap_dirty;
-	public static String resource_sync_info_snap_dirty;
-	public static String resource_no_content_description;
-	public static String resource_default_content_description;
-
-	public static String resource_content_description;
-	public static String resource_error_content_description;
-	public static String resource_content_description_from_cache;
-
-	public static String resource_markers;
-	public static String resource_error_marker;
-
-	public static String resource_sync_info;
-
-	public static String depend_noInformation;
-	public static String depend_noParentPlugins;
-	public static String depend_requiredBy;
-	public static String depend_noChildrenPlugins;
-	public static String depend_requires;
-	public static String depend_badPluginId;
-
-	static {
-		// load message values from bundle file
-		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/Policy.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/Policy.java
deleted file mode 100644
index 08fe8f3..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/Policy.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools;
-
-import org.eclipse.core.runtime.*;
-
-public class Policy {
-
-	public static IProgressMonitor monitorFor(IProgressMonitor monitor) {
-		if (monitor == null)
-			return new NullProgressMonitor();
-		return monitor;
-	}
-
-	public static IProgressMonitor subMonitorFor(IProgressMonitor monitor, int ticks) {
-		if (monitor == null)
-			return new NullProgressMonitor();
-		if (monitor instanceof NullProgressMonitor)
-			return monitor;
-		return new SubProgressMonitor(monitor, ticks);
-	}
-
-	public static IProgressMonitor subMonitorFor(IProgressMonitor monitor, int ticks, int style) {
-		if (monitor == null)
-			return new NullProgressMonitor();
-		if (monitor instanceof NullProgressMonitor)
-			return monitor;
-		return new SubProgressMonitor(monitor, ticks, style);
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/SelectAllAction.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/SelectAllAction.java
deleted file mode 100644
index 27a0dfa..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/SelectAllAction.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools;
-
-import org.eclipse.jface.text.ITextOperationTarget;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.actions.ActionFactory;
-
-public class SelectAllAction extends GlobalAction {
-
-	private ITextOperationTarget target;
-
-	public SelectAllAction(ITextOperationTarget target) {
-		super("Select &All"); //$NON-NLS-1$
-		this.target = target;
-	}
-
-	/**
-	 * Registers this action as a global action handler.
-	 * 
-	 * @param actionBars the action bars where this action will be registered.
-	 * @see org.eclipse.core.tools.GlobalAction#registerAsGlobalAction(org.eclipse.ui.IActionBars)
-	 */
-	public void registerAsGlobalAction(IActionBars actionBars) {
-		actionBars.setGlobalActionHandler(ActionFactory.SELECT_ALL.getId(), this);
-	}
-
-	/**
-	 * @see org.eclipse.jface.action.Action#run()
-	 */
-	public void run() {
-		target.doOperation(ITextOperationTarget.SELECT_ALL);
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/SpyView.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/SpyView.java
deleted file mode 100644
index 41694cb..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/SpyView.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools;
-
-import org.eclipse.ui.part.ViewPart;
-
-/** 
- * A common base class for all Spy Plug-in views
- */
-public abstract class SpyView extends ViewPart {
-	/**
-	 * SpyView constructor comment.
-	 */
-	public SpyView() {
-		super();
-	}
-
-	/**
-	 * Asks this part to take focus within the workbench. Does nothing.
-	 */
-	public void setFocus() {
-		// do nothing
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/TableSelectionProviderDecorator.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/TableSelectionProviderDecorator.java
deleted file mode 100644
index aab013f..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/TableSelectionProviderDecorator.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools;
-
-import java.util.Iterator;
-import org.eclipse.core.runtime.PerformanceStats;
-import org.eclipse.jface.viewers.*;
-
-/**
- * This class provides a decorator for ISelectionProviders that use
- * TableViewer as their viewer and PluginStats as the basis for their data
- * model. The only affected method is <code>getSelection()</code>, which will
- * return a string that closely resembles the table view of this object.
- * 
- */
-public class TableSelectionProviderDecorator implements ISelectionProvider {
-
-	/** The decorated selection provider. */
-	private ISelectionProvider selectionProvider;
-
-	/** 
-	 * Constructs a <code>TableSelectionProviderDecorator</code> having
-	 * the given selection provider as its decorated object.
-	 * 
-	 * @param selectionProvider the selection provider to be decorated
-	 */
-	public TableSelectionProviderDecorator(ISelectionProvider selectionProvider) {
-		this.selectionProvider = selectionProvider;
-	}
-
-	/**
-	 * @see org.eclipse.jface.viewers.ISelectionProvider#addSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener)
-	 */
-	public void addSelectionChangedListener(ISelectionChangedListener listener) {
-		selectionProvider.addSelectionChangedListener(listener);
-	}
-
-	/**
-	 * Returns the current selection for this provider. If the selection is a
-	 * structured selection made of <code>PluginStats</code> elements, this method
-	 * will return a structured selection of strings that resemble the table view
-	 * of this data.
-	 * 
-	 * @return the current selection, printed in table view format
-	 * @see org.eclipse.jface.viewers.ISelectionProvider#getSelection()
-	 */
-	public ISelection getSelection() {
-		// gets the original selection object 
-		ISelection selection = selectionProvider.getSelection();
-
-		// in these cases the original selection will be returned
-		if (selection == null || selection.isEmpty() || !(selection instanceof IStructuredSelection))
-			return selection;
-
-		// constructs a list with the selected elements 
-		IStructuredSelection structuredSelection = (IStructuredSelection) selection;
-
-		StringBuffer copyText = new StringBuffer();
-		copyText.append(headerPluginStats());
-		copyText.append('\n');
-		for (Iterator selectionIter = structuredSelection.iterator(); selectionIter.hasNext();) {
-			Object obj = selectionIter.next();
-			if (obj instanceof PerformanceStats) {
-				copyText.append(prettyPluginStats((PerformanceStats) obj));
-				copyText.append('\n');
-			}
-		}
-		return new StructuredSelection(copyText);
-
-	}
-
-	private String headerPluginStats() {
-		String retString = ""; //$NON-NLS-1$
-		retString += Messages.stats_eventHeader + "\t"; //$NON-NLS-1$
-		retString += Messages.stats_blameHeader + "\t"; //$NON-NLS-1$
-		retString += Messages.stats_contextHeader + "\t"; //$NON-NLS-1$
-		retString += Messages.stats_countHeader + "\t"; //$NON-NLS-1$
-		retString += Messages.stats_timeHeader + "\t"; //$NON-NLS-1$
-		return retString;
-	}
-
-	private String prettyPluginStats(PerformanceStats stats) {
-		String retString = ""; //$NON-NLS-1$
-		retString += stats.getEvent() + "\t\t"; //$NON-NLS-1$
-		retString += stats.getBlameString() + "\t\t"; //$NON-NLS-1$
-		retString += stats.getContext() + "\t\t"; //$NON-NLS-1$
-		retString += stats.getRunCount() + "\t"; //$NON-NLS-1$
-		retString += stats.getRunningTime() + "\t"; //$NON-NLS-1$
-		return retString;
-	}
-
-	/**
-	 * @see org.eclipse.jface.viewers.ISelectionProvider#removeSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener)
-	 */
-	public void removeSelectionChangedListener(ISelectionChangedListener listener) {
-		selectionProvider.removeSelectionChangedListener(listener);
-	}
-
-	/**
-	 * @see org.eclipse.jface.viewers.ISelectionProvider#setSelection(org.eclipse.jface.viewers.ISelection)
-	 */
-	public void setSelection(ISelection selection) {
-		selectionProvider.setSelection(selection);
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/TableWithTotalView.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/TableWithTotalView.java
deleted file mode 100644
index d53624c..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/TableWithTotalView.java
+++ /dev/null
@@ -1,260 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools;
-
-import java.util.Iterator;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.TableTree;
-import org.eclipse.swt.dnd.*;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.part.ViewPart;
-
-/**
- * Abstract class representing a view made of two tables.
- * The first one is used to display data and the second to display totals of the
- * data showed in the first table.
- */
-public abstract class TableWithTotalView extends ViewPart implements ISelectionProvider {
-	protected TableTreeViewer viewer; // Table tree viewer used to contain all the data but the total
-	protected TableTree tableTree; // The table tree that will populate the viewer
-	protected Table totalTable; // The table used to display the totals
-	protected boolean flat; // Flag indicating the view mode 
-	protected Clipboard clipboard;
-	protected Action copyAction;
-	protected Action selectAllAction;
-
-	abstract protected String[] getColumnHeaders();
-
-	abstract protected ColumnLayoutData[] getColumnLayout();
-
-	abstract protected void createActions();
-
-	abstract protected void createToolbar();
-
-	abstract protected void createContextMenu();
-
-	private SelectionListener getColumnListener() {
-		return new SelectionListener() {
-			public void widgetDefaultSelected(SelectionEvent event) {
-				// do nothing
-			}
-
-			public void widgetSelected(SelectionEvent event) {
-				// column selected - need to sort
-				int column = viewer.getTableTree().getTable().indexOf((TableColumn) event.widget);
-
-				ISorter oldSorter = (ISorter) viewer.getSorter();
-				boolean threeState = oldSorter.states() == 3;
-				ISelection selection = viewer.getSelection();
-
-				// first check to see if we are changing sort columns.
-				// If so, set flatness and get a new sorter
-				if (oldSorter == null || !threeState || column != oldSorter.getColumnNumber()) {
-					flat = column != 0; // default for column 0 is NOT flat
-					viewer.setSorter(getSorter(column));
-				} else {
-					// Not changing sorters so we have to cycle through states for the columns
-					// Three state sort for column 0.  !flat/!reverse -> flat/!reverse -> flat/reverse
-					if (column == 0) {
-						if (flat) {
-							if (oldSorter.isReversed())
-								flat = false;
-							oldSorter.setReversed(!oldSorter.isReversed());
-						} else {
-							flat = true;
-							oldSorter.setReversed(false);
-						}
-					} else { // for all other columns flatten and simply reverse
-						flat = true;
-						oldSorter.setReversed(!oldSorter.isReversed());
-					}
-				}
-				if (viewer.getContentProvider() instanceof IFlattable)
-					((IFlattable) viewer.getContentProvider()).setFlat(flat);
-				viewer.refresh();
-				viewer.setSelection(selection);
-			}
-		};
-	}
-
-	protected ControlListener getColumnResizeListener() {
-		return new ControlListener() {
-			public void controlMoved(ControlEvent event) {
-				// do nothing
-			}
-
-			public void controlResized(ControlEvent event) {
-				TableColumn column = (TableColumn) event.widget;
-				int columnNumber = viewer.getTableTree().getTable().indexOf(column);
-				totalTable.getColumn(columnNumber).setWidth(column.getWidth());
-			}
-		};
-	}
-
-	private void createTables(Composite parent) {
-		// create a first table, that will display all the data
-		tableTree = new TableTree(parent, SWT.V_SCROLL | SWT.MULTI | SWT.FULL_SELECTION | SWT.HIDE_SELECTION);
-		tableTree.setLayoutData(new GridData(GridData.FILL_BOTH));
-		Table table = tableTree.getTable();
-		table.setHeaderVisible(true);
-		table.setLinesVisible(true);
-		TableLayout tableLayout = new TableLayout();
-		table.setLayout(tableLayout);
-
-		SelectionListener headerListener = getColumnListener();
-
-		// create a second table for totals
-		totalTable = new Table(parent, 0);
-		GridData gridInfo = new GridData(GridData.FILL_HORIZONTAL);
-		gridInfo.heightHint = totalTable.getItemHeight();
-		totalTable.setLayoutData(gridInfo);
-		totalTable.setHeaderVisible(false);
-		totalTable.setLinesVisible(true);
-		TableLayout totalLayout = new TableLayout();
-		totalTable.setLayout(totalLayout);
-
-		ControlListener columnResizeListener = getColumnResizeListener();
-		//create the columns for the two tables
-		ColumnLayoutData[] columnLayout = getColumnLayout();
-		String[] headers = getColumnHeaders();
-		for (int i = 0; i < getColumnHeaders().length; i++) {
-			// column for the first table
-			tableLayout.addColumnData(columnLayout[i]);
-			TableColumn column = new TableColumn(table, SWT.NONE, i);
-			column.setResizable(true);
-			column.setText(headers[i]);
-			column.addSelectionListener(headerListener);
-			// "connect" the two tables so the width of their column evolve simultaneously
-			// more precisely here, only the resize of the first table will trigger a resize of the second one
-			column.addControlListener(columnResizeListener);
-
-			// column for the second table
-			totalLayout.addColumnData(columnLayout[i]);
-			column = new TableColumn(totalTable, SWT.NONE, i);
-			column.setResizable(true);
-		}
-	}
-
-	protected abstract ITreeContentProvider getContentProvider();
-
-	protected abstract ITableLabelProvider getLabelProvider();
-
-	protected abstract ViewerSorter getSorter(int column);
-
-	protected abstract String getStatusLineMessage(Object element);
-
-	public void createPartControl(Composite parent) {
-		Composite composite = new Composite(parent, 0);
-		// crete a grid layout of one column
-		GridLayout layout = new GridLayout();
-		layout.numColumns = 1;
-		composite.setLayout(layout);
-
-		createTables(composite);
-
-		clipboard = new Clipboard(parent.getDisplay());
-		//create the viewer
-		viewer = new TableTreeViewer(tableTree);
-		viewer.setContentProvider(getContentProvider());
-		viewer.setLabelProvider(getLabelProvider());
-		viewer.setSorter(getSorter(0));
-		viewer.addSelectionChangedListener(getTableListener());
-
-		createCommonActions();
-		createActions();
-		createToolbar();
-		createContextMenu();
-	}
-
-	abstract protected String[] computeTotalLine(Iterator elements);
-
-	private void createCommonActions() {
-		copyAction = new Action() {
-			public void run() {
-				IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
-				String result = ""; //$NON-NLS-1$
-				String[] columnHeaders = getColumnHeaders();
-				for (int i = 0; i < columnHeaders.length; i++)
-					result += columnHeaders[i] + ","; //$NON-NLS-1$
-				result += "\n\n"; //$NON-NLS-1$
-
-				ITableLabelProvider labelProvider = (ITableLabelProvider) viewer.getLabelProvider();
-				for (Iterator iterator = selection.iterator(); iterator.hasNext();) {
-					Object selectedItem = iterator.next();
-					for (int i = 0; i < columnHeaders.length; i++)
-						result += labelProvider.getColumnText(selectedItem, i) + ","; //$NON-NLS-1$
-					result += "\n"; //$NON-NLS-1$
-				}
-				clipboard.setContents(new Object[] {result}, new Transfer[] {TextTransfer.getInstance()});
-			}
-		};
-		IActionBars actionBars = getViewSite().getActionBars();
-		actionBars.setGlobalActionHandler(ActionFactory.COPY.getId(), copyAction);
-
-		selectAllAction = new Action() {
-			public void run() {
-				tableTree.selectAll();
-				// force viewer selection change
-				viewer.setSelection(viewer.getSelection());
-			}
-		};
-		actionBars.setGlobalActionHandler(ActionFactory.SELECT_ALL.getId(), selectAllAction);
-	}
-
-	protected ISelectionChangedListener getTableListener() {
-		return new ISelectionChangedListener() {
-			public void selectionChanged(SelectionChangedEvent e) {
-				IStructuredSelection selection = (IStructuredSelection) e.getSelection();
-				copyAction.setEnabled(!selection.isEmpty());
-				if (selection.size() == 1) {
-					String message = getStatusLineMessage(selection.getFirstElement());
-					getViewSite().getActionBars().getStatusLineManager().setMessage(message);
-				}
-				totalTable.removeAll();
-				updateTotals();
-			}
-		};
-	}
-
-	public void updateTotals() {
-		IStructuredSelection selection = (IStructuredSelection) getSelection();
-		TableItem item = new TableItem(totalTable, 0);
-		item.setText(computeTotalLine(selection.iterator()));
-	}
-
-	public ISelection getSelection() {
-		return viewer.getSelection();
-	}
-
-	public void addSelectionChangedListener(ISelectionChangedListener listener) {
-		// do nothing
-	}
-
-	public void removeSelectionChangedListener(ISelectionChangedListener listener) {
-		// do nothing
-	}
-
-	public void setSelection(ISelection selection) {
-		// do nothing
-	}
-
-	public void setFocus() {
-		if (tableTree != null)
-			tableTree.setFocus();
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/TreeContentProviderNode.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/TreeContentProviderNode.java
deleted file mode 100644
index 96801e5..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/TreeContentProviderNode.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools;
-
-import java.util.*;
-import org.eclipse.core.runtime.IAdaptable;
-
-/**
- * Represents a node (possibly containing children) in a tree content 
- * provider model. Every node has a name and optionally a value.
- */
-public class TreeContentProviderNode implements Comparable, IAdaptable {
-
-	/**
-	 * A list containing this node's children. 
-	 */
-	private List children;
-
-	/**
-	 * This node's name (may be null).
-	 */
-	private String name;
-
-	/** 
-	 * This node's value (may be null).
-	 */
-	private Object value;
-
-	/**
-	 * This node's parent node.
-	 */
-	private TreeContentProviderNode parent;
-
-	/**
-	 * Constructs a TreeContentProviderNode with the given name and value.
-	 * 
-	 * @param name this node's name (may be null, if value is not null)
-	 * @param value this node's value (may be null, if name is not null)
-	 */
-	public TreeContentProviderNode(String name, Object value) {
-		this.name = name;
-		this.value = value;
-	}
-
-	/**
-	 * Constructs a TreeContentProviderNode with the given name.
-	 * 
-	 * @param name this node's name (may not be null). 
-	 */
-	public TreeContentProviderNode(String name) {
-		this(name, null);
-	}
-
-	/**
-	 * Sets this node's parent.
-	 * 
-	 * @param parent this node's new parent
-	 */
-	private void setParent(TreeContentProviderNode parent) {
-		this.parent = parent;
-	}
-
-	/**
-	 * Adds a new child. If the child is a TreeContentProviderNode, sets its parent
-	 * to this object.
-	 * 
-	 * @param child a new child to be added.
-	 */
-	public void addChild(Object child) {
-		// lazilly instantiates the children's list
-		if (this.children == null) {
-			this.children = new ArrayList();
-		}
-		this.children.add(child);
-		if (child instanceof TreeContentProviderNode) {
-			TreeContentProviderNode childNode = (TreeContentProviderNode) child;
-			childNode.setParent(this);
-		}
-	}
-
-	/**
-	 * Returns an array containing all children this node has. If this node 
-	 * has no children, returns an empty array.
-	 * 
-	 * @return an array containing this node's children.
-	 */
-	public Object[] getChildren() {
-		return children == null ? new Object[0] : children.toArray();
-	}
-
-	/**
-	 * Returns a boolean indicating if this node has any children.
-	 * 
-	 * @return true, if this node has children, false otherwise
-	 */
-	public boolean hasChildren() {
-		return children != null && !children.isEmpty();
-	}
-
-	/**
-	 * Returns a string representation of the object.
-	 * 
-	 * @see java.lang.Object#toString()
-	 */
-	public String toString() {
-		if (name == null)
-			return value.toString();
-		if (value == null)
-			return name;
-		return name + " = " + value; //$NON-NLS-1$
-	}
-
-	/**
-	 * Returns this node's parent node.
-	 * 
-	 * @return this node's parent node or null, if this node is a root
-	 */
-	public TreeContentProviderNode getParent() {
-		return parent;
-	}
-
-	/**
-	 * Returns this node's value (may be null).
-	 * 
-	 * @return this node's value
-	 */
-	public Object getValue() {
-		return value;
-	}
-
-	/**
-	 * Returns a boolean indicating if this node is root or not.
-	 * 
-	 * @return true if this node is root, false otherwise
-	 */
-	public boolean isRoot() {
-		return parent == null;
-	}
-
-	/**
-	 * Removes all child nodes (if any) from this node. This operation affects
-	 * only this node. No changes are made to the child nodes. 
-	 */
-	public void removeAllChildren() {
-		if (children == null)
-			return;
-
-		children.clear();
-	}
-
-	/**
-	 * Sorts this node's children list in ascending order. The children are 
-	 * ordered by name. Any changes in the children list will potentially 
-	 * invalidate the ordering. All children must be instances of 
-	 * <code>TreeContentProviderNode</code>. 
-	 */
-	public void sort() {
-		if (children == null)
-			return;
-		Collections.sort(children);
-	}
-
-	/**
-	 * Compares this node with another node. 
-	 * 
-	 * @see java.lang.Comparable#compareTo(java.lang.Object)
-	 */
-	public int compareTo(Object other) {
-		TreeContentProviderNode otherNode = (TreeContentProviderNode) other;
-		return this.name.compareTo(otherNode.name);
-	}
-
-	/**
-	 * Accepts the given visitor. The visitor's <code>visit</code> method is called
-	 * with this node. If the visitor returns <code>true</code>, this method visits
-	 * this node's child nodes.
-	 *
-	 * @param visitor the visitor
-	 * @see ITreeNodeVisitor#visit
-	 */
-	public void accept(ITreeNodeVisitor visitor) {
-		if (!visitor.visit(this))
-			return;
-		if (children == null)
-			return;
-		for (Iterator childrenIter = children.iterator(); childrenIter.hasNext();) {
-			Object child = childrenIter.next();
-			// child nodes don't need to be TreeContentProviderNodes
-			if (child instanceof TreeContentProviderNode)
-				((TreeContentProviderNode) child).accept(visitor);
-		}
-	}
-
-	/**
-	 * Returns this node's tree root node. If this node is a root node, returns itself.
-	 * 
-	 * @return this node's tree root node
-	 */
-	public TreeContentProviderNode getRoot() {
-		return this.getParent() == null ? this : this.getParent().getRoot();
-	}
-
-	/**
-	 * Returns this node's immediate child that has the given value.
-	 * 
-	 * @return a tree node, or <code>null</code>
-	 */
-	public TreeContentProviderNode findNode(Object obj) {
-		if (obj.equals(this.value))
-			return this;
-		if (children == null || children.isEmpty())
-			return null;
-		for (Iterator i = children.iterator(); i.hasNext();) {
-			TreeContentProviderNode found = ((TreeContentProviderNode) i.next()).findNode(obj);
-			if (found != null)
-				return found;
-		}
-		return null;
-	}
-
-	/**
-	 * Returns this node's name.
-	 */
-	public String getName() {
-		return name;
-	}
-
-	public Object getAdapter(Class adapter) {
-		return value instanceof IAdaptable ? ((IAdaptable) value).getAdapter(adapter) : null;
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/TreeSelectionProviderDecorator.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/TreeSelectionProviderDecorator.java
deleted file mode 100644
index 113e231..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/TreeSelectionProviderDecorator.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools;
-
-import java.util.*;
-import org.eclipse.jface.viewers.*;
-
-/**
- * This class provides a decorator for ISelectionProviders that use
- * TreeContentProviderNode as the basis for their data model.
- * The only affected method is <code>getSelection()</code>, which will return a
- * selection object that provides selected elements in the same order they
- * appear in the tree.
- * 
- * <p>This class is an workaround to the SWT's <code>Tree.getSelection()</code>
- * method, which returns an array of selected elements without preserving the
- * order they appear in the tree widget.</p>
- */
-public class TreeSelectionProviderDecorator implements ISelectionProvider {
-
-	/** The decorated selection provider. */
-	private ISelectionProvider selectionProvider;
-
-	/** 
-	 * Constructs a <code>TreeSelectionProviderDecorator</code> having the given 
-	 * selection provider as its decorated object.
-	 * 
-	 * @param selectionProvider the selection provider to be decorated
-	 */
-	public TreeSelectionProviderDecorator(ISelectionProvider selectionProvider) {
-		this.selectionProvider = selectionProvider;
-	}
-
-	/**
-	 * @see org.eclipse.jface.viewers.ISelectionProvider#addSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener)
-	 */
-	public void addSelectionChangedListener(ISelectionChangedListener listener) {
-		selectionProvider.addSelectionChangedListener(listener);
-	}
-
-	/**
-	 * Returns the current selection for this provider. If the selection is a
-	 * structured selection made of <code>TreeContentProviderNode</code>
-	 * elements, this method will return a structured selection where the order of
-	 * elements is the same order the elements appear in the tree (only for tree
-	 * elements that are instances of <code>TreeContentProviderNode</code>).
-	 * 
-	 * @return the current selection, ordered in the same sequence they appear in
-	 * the tree
-	 * @see org.eclipse.jface.viewers.ISelectionProvider#getSelection()
-	 */
-	public ISelection getSelection() {
-		// gets the original selection object 
-		ISelection selection = selectionProvider.getSelection();
-
-		// in these cases the original selection will be returned
-		if (selection == null || selection.isEmpty() || !(selection instanceof IStructuredSelection))
-			return selection;
-
-		// constructs a list with the selected elements 
-		IStructuredSelection structuredSelection = (IStructuredSelection) selection;
-		final List selectedElements = new ArrayList(structuredSelection.toList());
-
-		// tries to find a TreeContentProviderNode between the selected elements
-		TreeContentProviderNode anyNode = findNodeElement(selectedElements);
-
-		// if there is no TreeContentProviderNodes, there is nothing to do
-		if (anyNode == null)
-			return selection;
-
-		// otherwise, we will move the elements to a new list in the same order
-		// we find them in the tree.
-		final List orderedElements = new LinkedList();
-
-		// uses a visitor to traverse the whole tree
-		// when a visited node is the selected list, it is moved to the ordered list  
-		anyNode.getRoot().accept(new ITreeNodeVisitor() {
-			public boolean visit(TreeContentProviderNode node) {
-				int elementIndex = selectedElements.indexOf(node);
-
-				if (selectedElements.contains(node))
-					orderedElements.add(selectedElements.remove(elementIndex));
-
-				return true;
-			}
-		});
-
-		// any remaining elements in the list (probably they are not tree nodes)
-		// are copied to the end of the ordered list    
-		orderedElements.addAll(selectedElements);
-		return new StructuredSelection(orderedElements);
-	}
-
-	/** 
-	 * Returns the first element in the list that is instance of 
-	 * <code>TreeContentProviderNode</code>.
-	 * 
-	 * @return the first element that is a tree node or null, if none is found.
-	 */
-	private TreeContentProviderNode findNodeElement(List elements) {
-		for (Iterator iter = elements.iterator(); iter.hasNext();) {
-			Object element = iter.next();
-			if (element instanceof TreeContentProviderNode)
-				return (TreeContentProviderNode) element;
-		}
-
-		return null;
-	}
-
-	/**
-	 * @see org.eclipse.jface.viewers.ISelectionProvider#removeSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener)
-	 */
-	public void removeSelectionChangedListener(ISelectionChangedListener listener) {
-		selectionProvider.removeSelectionChangedListener(listener);
-	}
-
-	/**
-	 * @see org.eclipse.jface.viewers.ISelectionProvider#setSelection(org.eclipse.jface.viewers.ISelection)
-	 */
-	public void setSelection(ISelection selection) {
-		selectionProvider.setSelection(selection);
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/TreeTextOperationTarget.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/TreeTextOperationTarget.java
deleted file mode 100644
index ebb876b..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/TreeTextOperationTarget.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools;
-
-import org.eclipse.jface.text.ITextOperationTarget;
-import org.eclipse.swt.widgets.Tree;
-
-public class TreeTextOperationTarget implements ITextOperationTarget {
-
-	private Tree tree;
-
-	public TreeTextOperationTarget(Tree tree) {
-		this.tree = tree;
-	}
-
-	/**
-	 * @see org.eclipse.jface.text.ITextOperationTarget#canDoOperation(int)
-	 */
-	public boolean canDoOperation(int operation) {
-		return true;
-	}
-
-	/**
-	 * @see org.eclipse.jface.text.ITextOperationTarget#doOperation(int)
-	 */
-	public void doOperation(int operation) {
-		//TODO: add support to other operations
-		switch (operation) {
-			case ITextOperationTarget.SELECT_ALL :
-				tree.selectAll();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/messages.properties b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/messages.properties
deleted file mode 100644
index 3c822a7..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/messages.properties
+++ /dev/null
@@ -1,71 +0,0 @@
-###############################################################################
-# Copyright (c) 2004, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-### Spy message catalog
-
-
-### Stats View
-stats_eventHeader = Event
-stats_blameHeader = Blame
-stats_contextHeader = Context
-stats_countHeader = Count
-stats_timeHeader = Time
-
-stats_badStat = Not an EventStats
-stats_badColumn = Invalid Column
-stats_pluginid = Plug-in Identifier: {0}
-
-### Resource Spy
-resource_error_unknown_resource_impl = Error: unknown IResource implementation: {0}
-
-resource_file = File
-resource_folder = Folder
-resource_project = Project
-resource_root = Root
-resource_full_path = Full Path
-resource_content_id = Content ID
-resource_type = Type
-resource_node_id = Node ID
-resource_local_sync_info = Local Sync Info
-
-resource_persistent_properties = Persistent Properties
-resource_error_stored_properties = Error getting resource's stored properties: {0}
-
-resource_session_properties = Session Properties
-
-resource_flags = Flags
-resource_open = Open
-resource_local_exists = Local exists
-resource_phantom = Phantom
-resource_used = Used
-resource_derived = Derived
-resource_team_private = Team private
-resource_markers_snap_dirty = Marker snapshot is dirty
-resource_sync_info_snap_dirty = Sync info snapshot is dirty
-resource_no_content_description = No content description
-resource_default_content_description = Default content description
-
-resource_content_description = Content description
-resource_error_content_description = Error getting file's content description: {0}
-resource_content_description_from_cache = cached: {0}
-
-resource_markers = Markers
-resource_error_marker = Error getting marker information: {0}
-
-resource_sync_info = Sync information
-
-### Plug-in Dependency Spy
-depend_noInformation = Unable to find information for {0}.
-depend_noParentPlugins = Not required by any plug-ins.
-depend_requiredBy = Required by:
-depend_noChildrenPlugins = Requires no plug-ins.
-depend_requires = Requires:
-depend_badPluginId = Invalid plug-in id
-
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/AbstractDumper.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/AbstractDumper.java
deleted file mode 100644
index ffd879c..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/AbstractDumper.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.metadata;
-
-import java.io.*;
-
-/**
- * An abstract implementation for dumpers that generate bare text dumps by 
- * sequentially reading input streams.
- */
-public abstract class AbstractDumper implements IDumper {
-
-	/**
-	 * Reads a given file and produces a dump object. Provides a template implementation for 
-	 * <code>IDumper.dump(java.io.File)</code>. 
-	 * <p>Subclasses must implement 
-	 * <code>getStringDumpingStrategy(InputStream)</code> in order to select the 
-	 * real dumping behaviour. This method will call 
-	 * <code>IStringDumpingStrategy#dumpStringContents(DataInputStream)</code> on 
-	 * the returned strategy. If, after calling that method,  there are still bytes 
-	 * to be read in the input stream, 
-	 * <code>getStringDumpingStrategy(InputStream)</code> will be called again in 
-	 * order to select another strategy to read the remaining contents, and so on.
-	 * </p> 
-	 *
-	 * <p>Subclasses can also select which type of low-level InputStream will be 
-	 * used to read the file to be dumped by overriding
-	 * <code>openInputStream(File)</code>.</p> 
-	 * 
-	 * @param file the file to be dumped
-	 * @return a dump object representing the contents of the dumped file
-	 * @see org.eclipse.core.tools.metadata.IDumper#dump(java.io.File)
-	 * @see IStringDumpingStrategy#dumpStringContents(DataInputStream)
-	 * @see #openInputStream(File)
-	 */
-	public IDump dump(File file) {
-		DataInputStream dataInput = null;
-		MeteredInputStream meteredInput = null;
-		Dump dump = new Dump();
-		dump.setFile(file);
-		StringBuffer contents = new StringBuffer(40);
-		try {
-			//uses a metered input stream in order to count the number of bytes read
-			meteredInput = new MeteredInputStream(openInputStream(file));
-			dumpContents(meteredInput, contents); //$NON-NLS-1$
-		} catch (PartialDumpException pde) {
-			// ensure we remember any partial contents
-			if (pde.getPartialContents() != null)
-				contents.append(pde.getPartialContents());
-			dump.setFailureReason(pde);
-		} catch (Exception e) {
-			dump.setFailureReason(e);
-		} finally {
-			if (dataInput != null)
-				try {
-					dataInput.close();
-				} catch (IOException ioe) {
-					if (!dump.isFailed())
-						dump.setFailureReason(ioe);
-				}
-		}
-		dump.setContents(contents.toString());
-		if (meteredInput != null)
-			dump.setOffset(meteredInput.getOffset());
-		return dump;
-	}
-
-	/**
-	 * Does the actual  work. Subclasses must implement this method to define
-	 * dumping behavior. The results are added to the <code>contents</code>
-	 * string buffer.
-	 *  
-	 * @param input
-	 * @param contents
-	 * @throws IOException
-	 * @throws Exception
-	 * @throws DumpException
-	 */
-	protected abstract void dumpContents(PushbackInputStream input, StringBuffer contents) throws IOException, Exception, DumpException;
-
-	/**
-	 * Opens an input stream connected to the file object provided. Provides an 
-	 * opportunity for subclasses to select a different input stream class. By 
-	 * default, returns a <code>FileInputStream</code> object.
-	 * 
-	 * @param file the file to be opened
-	 * @return an input stream connected to the file provided as 
-	 * argument
-	 * @throws IOException if an exception happens while opening the inpuut stream
-	 */
-	protected InputStream openInputStream(File file) throws IOException {
-		return new FileInputStream(file);
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/Dump.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/Dump.java
deleted file mode 100644
index cbaf37d..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/Dump.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.metadata;
-
-import java.io.File;
-
-/**
- * Default implementation for <code>IDump</code>. 
- * 
- * @see IDump
- */
-public class Dump implements IDump {
-	/**
-	 * The file processed in order to produce this dump
-	 */
-	private File file;
-	/**
-	 * The failure flag for this dump object.
-	 */
-	private boolean failed;
-	/**
-	 * The exception that caused the failure (may be null) 
-	 */
-	private Exception failureReason;
-	/**
-	 * An object that represents the dump contents.
-	 */
-	private Object contents;
-	/**
-	 * The offset where the dumper stopped when reading the dumped file.
-	 */
-	private long offset;
-
-	/**
-	 * Constructs a Dump object to be initialized using the setter methods.
-	 */
-	public Dump() {
-		super();
-	}
-
-	/**
-	 * @see org.eclipse.core.tools.metadata.IDump#getFile()
-	 */
-	public File getFile() {
-		return file;
-	}
-
-	/**
-	 * @see org.eclipse.core.tools.metadata.IDump#isFailed()
-	 */
-	public boolean isFailed() {
-		return failed || this.failureReason != null;
-	}
-
-	/**
-	 * @see org.eclipse.core.tools.metadata.IDump#getFailureReason()
-	 */
-	public Exception getFailureReason() {
-		return failureReason;
-	}
-
-	/**
-	 * Sets this dump object failed flag.
-	 * 
-	 * @param failed The value of the failed flag for this dump object
-	 */
-	public void setFailed(boolean failed) {
-		this.failed = failed;
-	}
-
-	/**
-	 * Sets the failure reason.
-	 * 
-	 * @param failureReason The failure reason for this dump object
-	 */
-	public void setFailureReason(Exception failureReason) {
-		this.failureReason = failureReason;
-	}
-
-	/**
-	 * Sets the file.
-	 * 
-	 * @param file The file for this dump object
-	 */
-	public void setFile(File file) {
-		this.file = file;
-	}
-
-	/**
-	 * @see IDump#getContents()
-	 */
-	public Object getContents() {
-		return contents;
-	}
-
-	/**
-	 * Sets the contents.
-	 * 
-	 * @param contents The contents for this dump object
-	 */
-	public void setContents(Object contents) {
-		this.contents = contents;
-	}
-
-	/**
-	 * Sets the offset.
-	 * 
-	 * @param offset The offset for this dump object
-	 */
-	public void setOffset(long offset) {
-		this.offset = offset;
-	}
-
-	/**
-	 * @see IDump#getOffset()
-	 */
-	public long getOffset() {
-		return offset;
-	}
-
-	/**
-	 * Returns a human-readable representation for this dump object (for 
-	 * debugging purposes).
-	 * 
-	 * @see java.lang.Object#toString()
-	 */
-	public String toString() {
-		return "File: " + getFile() + "\n" + "Contents: \n******\n" + getContents() + "\n******\n" + "Failed: " + failed + "\n" + "Reason: " + failureReason + "\n"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/DumpContentsView.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/DumpContentsView.java
deleted file mode 100644
index 0b423ce..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/DumpContentsView.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.metadata;
-
-import java.io.File;
-import org.eclipse.core.tools.*;
-import org.eclipse.jface.action.*;
-import org.eclipse.jface.text.Document;
-import org.eclipse.jface.text.TextViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-
-/**
- * Dump Contents Spy view. This view shows the contents resulting of a dumping
- * process.
- */
-public class DumpContentsView extends SpyView {
-
-	/** Stores the initially assigned view title. */
-	private String initialTitle;
-
-	/** The JFace widget that shows the current selected file dump contents. */
-	protected TextViewer viewer;
-
-	/** The file names registered in the DumperFactory. */
-	protected String[] registeredFileNames;
-
-	/** The dumper factory used to instantiate dumpers. */
-	private DumperFactory dumperFactory;
-
-	/** The current selected file. */
-	private File currentFile;
-
-	/** The id by which this view is known in the plug-in registry */
-	public static final String VIEW_ID = DumpContentsView.class.getName();
-
-	/**
-	 * Constructs a DumpContentsView. 
-	 */
-	public DumpContentsView() {
-		dumperFactory = DumperFactory.getInstance();
-		this.registeredFileNames = dumperFactory.getRegisteredFileNames();
-	}
-
-	/**
-	 * Creates this view widget and actions.
-	 * 
-	 * @param parent the parent control
-	 * @see org.eclipse.ui.IWorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
-	 */
-	public void createPartControl(final Composite parent) {
-		// creates a read-only text viewer
-		viewer = new TextViewer(parent, SWT.V_SCROLL | SWT.H_SCROLL);
-		viewer.setDocument(new Document());
-		viewer.setEditable(false);
-
-		// creates the actions
-		final IAction loadFileAction = new LoadFileAction();
-		final IAction copySelectionAction = new CopyTextSelectionAction(viewer);
-		final IAction clearContentsAction = new ClearTextAction(viewer.getDocument());
-
-		// adds actions to the menu bar
-		IMenuManager barMenuManager = getViewSite().getActionBars().getMenuManager();
-		barMenuManager.add(loadFileAction);
-		barMenuManager.add(copySelectionAction);
-		barMenuManager.add(clearContentsAction);
-
-		// creates a context menu with actions and adds it to the viewer control
-		MenuManager menuMgr = new MenuManager();
-		menuMgr.add(loadFileAction);
-		menuMgr.add(copySelectionAction);
-		menuMgr.add(clearContentsAction);
-		Menu menu = menuMgr.createContextMenu(viewer.getControl());
-		viewer.getControl().setMenu(menu);
-	}
-
-	/**
-	 * Sets the file to be dumped. The view state will be updated to reflect
-	 * changes.
-	 * 
-	 * @param file the file to be dumped
-	 */
-	public void setFile(File file) {
-		IDumper dumper = null;
-
-		// tries to get the associated file dumper
-		try {
-			dumper = dumperFactory.getDumper(file.getName());
-		} catch (DumpException de) {
-			ErrorUtil.logException(de, null);
-			ErrorUtil.showErrorMessage(de.getMessage(), "Error creating file dumper"); //$NON-NLS-1$
-			return;
-		}
-
-		// dumps file        
-		IDump dump = dumper.dump(file);
-		if (dump.isFailed()) {
-			CoreToolsPlugin.getDefault().log("Error during file dump", dump.getFailureReason()); //$NON-NLS-1$
-			String message = "File dumping did not complete successfully. Reason: " + dump.getFailureReason(); //$NON-NLS-1$
-			ErrorUtil.showErrorMessage(message, "Error during file dump"); //$NON-NLS-1$		
-		}
-
-		// loads the new dump object
-		load(dump);
-	}
-
-	/**
-	 * Rebuilds the view with the dump object provided.
-	 * 
-	 * @param dump a dump object to be shown on this view 
-	 */
-	private void load(IDump dump) {
-
-		this.currentFile = dump.getFile();
-
-		// now it is safe to get the part title 
-		// (during createPartControl it gets Workbench window title)
-		if (initialTitle == null)
-			this.initialTitle = this.getTitle();
-
-		// updates title and title tool tip
-		this.setContentDescription(initialTitle + " : " + this.currentFile.getName()); //$NON-NLS-1$
-		this.setTitleToolTip("Dump contents for " + this.currentFile.getAbsolutePath()); //$NON-NLS-1$
-
-		// updates viewer
-		viewer.getDocument().set(dump.getContents().toString());
-
-		// tries to show summary information in Dump Summary view
-		IWorkbenchPage page = this.getSite().getPage();
-		String summaryId = DumpSummaryView.VIEW_ID;
-
-		// maybe the summary view is already open
-		DumpSummaryView summaryView = (DumpSummaryView) page.findView(summaryId);
-
-		// if it is not the case and the dump failed, tries to open it
-		if (summaryView == null && dump.isFailed())
-			try {
-				summaryView = (DumpSummaryView) page.showView(summaryId);
-			} catch (PartInitException pie) {
-				ErrorUtil.logException(pie, "Error opening view"); //$NON-NLS-1$
-			}
-
-		// if the Dump Summary view is available, updates it 
-		if (summaryView != null)
-			summaryView.load(dump);
-	}
-
-	/** 
-	 * File load action implementation.
-	 */
-	private class LoadFileAction extends Action {
-		/** Sets action text and tool tip. */
-		LoadFileAction() {
-			this.setText("Load File..."); //$NON-NLS-1$
-			this.setToolTipText("Load file..."); //$NON-NLS-1$
-		}
-
-		/** 
-		 * Executes this action, opening a file dialog so the user can select the 
-		 * file to be dumped. If a file is successfully selected, opens it by
-		 * calling <code>#setFile(File)</code>.
-		 * 
-		 * @see DumpContentsView#setFile
-		 * @see org.eclipse.jface.action.IAction#run()
-		 */
-		public void run() {
-			// opens a file dialog
-			FileDialog fileDialog = new FileDialog(viewer.getControl().getShell(), SWT.OPEN);
-			fileDialog.setText("Please choose a metadata file to view"); //$NON-NLS-1$
-			fileDialog.setFilterExtensions(DumpContentsView.this.registeredFileNames);
-
-			// if a file hasn't been selected, ignore
-			String filePath = fileDialog.open();
-			if (filePath == null)
-				return;
-
-			// opens the selected file
-			DumpContentsView.this.setFile(new File(filePath));
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/DumpException.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/DumpException.java
deleted file mode 100644
index f253158..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/DumpException.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.metadata;
-
-import java.io.PrintStream;
-import java.io.PrintWriter;
-
-/**
- A high-level exception class to be used by <code>IDumper</code>s. It is 
- intended to be used as a wrapper for low-level exceptions. A method for 
- accessing the low-level exception that caused this 
- <code>DumpException</code> is provided.  
- */
-public class DumpException extends Exception {
-
-	private static final long serialVersionUID = 1L;
-	/**
-	 * The low-level exception that caused this <coed>DumpException</code>. May be 
-	 * null.
-	 */
-	private Throwable cause;
-
-	/**
-	 * Constructs a <code>DumpException</code> with the provided message.
-	 * 
-	 * @param msg the message
-	 */
-	public DumpException(String msg) {
-		super(msg);
-	}
-
-	/**
-	 * Constructs a <code>DumpException</code> with the provided message and cause.
-	 * 
-	 * @param msg the message 
-	 * @param cause the exception that caused this <code>DumpException</code>
-	 */
-	public DumpException(String msg, Throwable cause) {
-		super(msg);
-		this.cause = cause;
-	}
-
-	/**
-	 * Returns the cause for this <code>DumpException</code>. May be null.
-	 * 
-	 * @return the cause for this <code>DumpException</code>.
-	 */
-	public Throwable getCause() {
-		return cause;
-	}
-
-	/**
-	 * Returns this exception message (including the cause message, if there is a 
-	 * cause exception).
-	 * 
-	 * @return the error message string
-	 * @see java.lang.Throwable#getMessage()
-	 */
-	public String getMessage() {
-		return super.getMessage() + ((cause != null) ? (" caused by " + cause.toString()) : ""); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	/**
-	 * Prints this <code>DumpException</code> message and its backtrace to the 
-	 * specified print stream. 
-	 * 
-	 * @param output the <code>java.io.PrintStream</code> object where to print
-	 * @see java.lang.Throwable#printStackTrace(java.io.PrintStream)
-	 */
-	public void printStackTrace(PrintStream output) {
-		super.printStackTrace(output);
-		if (cause == null)
-			return;
-		output.println("*** Caused by:"); //$NON-NLS-1$
-		cause.printStackTrace(output);
-	}
-
-	/**
-	 * Prints this <code>DumpException</code> message and its backtrace to the 
-	 * specified print writer. 
-	 * 
-	 * @param output the <code>java.io.PrintWriter</code> object where to print
-	 * @see java.lang.Throwable#printStackTrace(java.io.PrintWriter)
-	 */
-	public void printStackTrace(PrintWriter output) {
-		super.printStackTrace(output);
-		if (cause == null)
-			return;
-		output.println("*** Caused by:"); //$NON-NLS-1$
-		cause.printStackTrace(output);
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/DumpSummaryView.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/DumpSummaryView.java
deleted file mode 100644
index 6fc7f01..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/DumpSummaryView.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.metadata;
-
-import java.io.File;
-import org.eclipse.core.tools.*;
-import org.eclipse.jface.action.*;
-import org.eclipse.jface.text.Document;
-import org.eclipse.jface.text.TextViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Menu;
-
-/**
- * Dump Summary Spy view. This view shows the outcome of a dumping.
- */
-public class DumpSummaryView extends SpyView {
-
-	/** Stores the initially assigned view title. */
-	private String initialTitle;
-
-	/** The JFace widget that shows the current selected file dump summary */
-	private TextViewer viewer;
-
-	/** The id by which this view is known in the plug-in registry */
-	public static final String VIEW_ID = DumpSummaryView.class.getName();
-
-	/**
-	 * Creates this view widget and actions.
-	 * 
-	 * @param parent the parent control
-	 * @see org.eclipse.ui.IWorkbenchPart#createPartControl
-	 * (org.eclipse.swt.widgets.Composite)
-	 */
-	public void createPartControl(final Composite parent) {
-
-		// creates a read-only text viewer
-		viewer = new TextViewer(parent, SWT.V_SCROLL | SWT.H_SCROLL);
-		viewer.setDocument(new Document());
-		viewer.setEditable(false);
-
-		final IAction copySelectionAction = new CopyTextSelectionAction(viewer);
-		final IAction clearContentsAction = new ClearTextAction(viewer.getDocument());
-
-		// adds actions to the menu bar
-		IMenuManager barMenuManager = getViewSite().getActionBars().getMenuManager();
-		barMenuManager.add(copySelectionAction);
-		barMenuManager.add(clearContentsAction);
-
-		// creates a context menu with actions and adds it to the viewer control
-		MenuManager menuMgr = new MenuManager();
-		menuMgr.add(copySelectionAction);
-		menuMgr.add(clearContentsAction);
-		Menu menu = menuMgr.createContextMenu(viewer.getControl());
-		viewer.getControl().setMenu(menu);
-	}
-
-	/**
-	 * Rebuilds the view with the dump object provided. Only summary information
-	 * is made available.
-	 * 
-	 * @param dump a dump object describing the result of a dumping process. 
-	 */
-	void load(IDump dump) {
-
-		// now is safe to get the part title
-		if (initialTitle == null)
-			this.initialTitle = this.getTitle();
-
-		// sets title and tool tip
-		File file = dump.getFile();
-		this.setContentDescription(initialTitle + " : " + file.getName()); //$NON-NLS-1$
-		this.setTitleToolTip("Dump summary for file " + file.getAbsolutePath()); //$NON-NLS-1$
-
-		// generates text to be shown on this view
-		StringBuffer output = new StringBuffer();
-		if (dump.isFailed())
-			output.append(dump.getFailureReason().toString());
-		else
-			output.append("No errors. "); //$NON-NLS-1$
-		output.append(dump.getOffset());
-		output.append('/');
-		output.append(dump.getFile().length());
-		output.append(" byte(s) read"); //$NON-NLS-1$
-		
-
-		// updates the view contents 
-		viewer.getDocument().set(output.toString());
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/DumpTool.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/DumpTool.java
deleted file mode 100644
index cd2c1b8..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/DumpTool.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.metadata;
-
-import java.io.File;
-import org.eclipse.core.runtime.IPlatformRunnable;
-
-/**
- * A command-line interface for running dumpers on metadata files.
- * This application requires the name of the file to be dumped as its unique
- * argument.  
- */
-public class DumpTool implements IPlatformRunnable {
-
-	/**
-	 * Dumps a given file using the associated dumper, sending its contents to the 
-	 * standard output. 
-	 * 
-	 * @param args the command-line arguments
-	 * @see DumperFactory#getDumper(String)
-	 */	
-	public Object run(Object args) throws Exception {		
-		String fileName = System.getProperty("dump.file"); //$NON-NLS-1$
-		if (fileName == null) {
-			System.err.println("Use \"dump.file\" system property to point to the metadata file to be dumped"); //$NON-NLS-1$			
-			return new Integer(0);
-		}
-
-		File toDump = new File(fileName);
-		if (!toDump.isFile()) {
-			System.err.println("File \"" + toDump.getAbsolutePath() + "\" does not exist or is not a file"); //$NON-NLS-1$ //$NON-NLS-2$			
-			return new Integer(1);
-		}
-
-		IDumper dumper = null;
-		try {
-			dumper = DumperFactory.getInstance().getDumper(fileName);
-		} catch (DumpException de) {
-			System.err.println("Error: \n" + de); //$NON-NLS-1$
-			return new Integer(1);
-		}
-		IDump dump = dumper.dump(new File(fileName));
-		System.out.print("Dump for file: "); //$NON-NLS-1$
-		System.out.println(dump.getFile().getAbsolutePath());
-		System.out.print("Contents: "); //$NON-NLS-1$
-		System.out.println(dump.getContents());
-		if (dump.isFailed()) {
-			System.out.print("*** Dump failed. Reason: "); //$NON-NLS-1$
-			System.out.print(dump.getFailureReason());
-		} else {
-			System.out.print(">>> File is ok"); //$NON-NLS-1$
-		}
-		System.out.print(". Bytes read: "); //$NON-NLS-1$
-		System.out.print(dump.getOffset());
-		System.out.print(" / Total: "); //$NON-NLS-1$
-		System.out.println(dump.getFile().length());
-		return new Integer(0);
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/DumperFactory.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/DumperFactory.java
deleted file mode 100644
index 9a4f457..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/DumperFactory.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.metadata;
-
-import java.io.File;
-import java.util.Properties;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.tools.CoreToolsPlugin;
-
-/**
- * A dumper factory creates a dumper object given a file name.
- */
-public class DumperFactory {
-
-	private static final String ELEM_DUMPER = "dumper"; //$NON-NLS-1$
-	private static final String ATTR_FILE_NAME = "file-name"; //$NON-NLS-1$
-	private static final String PT_METADATA_DUMPERS = "metadataDumpers"; //$NON-NLS-1$
-	/**
-	 * The <code>DumperFactory</code> singleton reference.
-	 */
-	private static DumperFactory ref;
-
-	/**
-	 * This dumper factory mappings configuration.
-	 */
-	private Properties configuration = new Properties();
-
-	/**
-	 * Provides access to a DumperFactory instance.
-	 * 
-	 * @return a <code>DumperFactory</code> instance
-	 */
-	public synchronized static DumperFactory getInstance() {
-		// currently we allow only one instance for this class
-		if (ref == null)
-			ref = new DumperFactory();
-		return ref;
-	}
-
-	/**
-	 * Constructs a dumper factory, reading dumper definitions from the 
-	 * extension registry. Forbids instantiation from outside this class. 
-	 */
-	private DumperFactory() {
-		loadDumpers();
-	}
-
-	private void loadDumpers() {
-		IExtensionPoint dumpersPoint = Platform.getExtensionRegistry().getExtensionPoint(CoreToolsPlugin.PLUGIN_ID, PT_METADATA_DUMPERS);
-		IConfigurationElement[] dumperDefinitions = dumpersPoint.getConfigurationElements();
-		for (int i = 0; i < dumperDefinitions.length; i++)
-			if (dumperDefinitions[i].getName().equals(ELEM_DUMPER))
-				configuration.put(dumperDefinitions[i].getAttributeAsIs(ATTR_FILE_NAME), dumperDefinitions[i]);
-	}
-
-	/**
-	 * Returns an array containing all known file names.
-	 * 
-	 * @return an array containing file names registered in this factory. 
-	 */
-	public String[] getRegisteredFileNames() {
-		String[] fileNames = new String[configuration.size()];
-		return (String[]) configuration.keySet().toArray(fileNames);
-	}
-
-	/**
-	 * Returns an instance of the dumper class registered for the provided file name. 
-	 * If there is no dumper class registered for the provided file name, raises an 
-	 * exception.
-	 * 
-	 * @param fileName the file to be dumped's name
-	 * @return a <code>IDumper</code> that knows how to read the file
-	 * @throws DumpException if there is no dumper class registered for the 
-	 * provided file name
-	 */
-	public IDumper getDumper(String fileName) throws DumpException {
-		fileName = fileName.substring(fileName.lastIndexOf(File.separator) + 1);
-
-		Object dumper = configuration.get(fileName);
-
-		if (dumper == null)
-			throw new DumpException("There is no dumper class for <" + fileName + "> files"); //$NON-NLS-1$ //$NON-NLS-2$
-
-		// legacy-style definition (from the properties file)
-		if (dumper instanceof String)
-			try {
-				return (IDumper) Class.forName((String) dumper).newInstance();
-			} catch (Exception e) {
-				throw new DumpException("Error instantiating dumper for <" + fileName + "> file", e); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		// dumper defined through extension mechanism	
-		try {
-			return (IDumper) ((IConfigurationElement) dumper).createExecutableExtension("class"); //$NON-NLS-1$
-		} catch (CoreException ce) {
-			throw new DumpException("Error instantiating dumper for <" + fileName + "> file", ce); //$NON-NLS-1$ //$NON-NLS-2$		
-		}
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/IDump.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/IDump.java
deleted file mode 100644
index cd17695..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/IDump.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.metadata;
-
-import java.io.File;
-
-/**
- * Represents an object produced by dumping a given file. 
- */
-public interface IDump {
-
-	/**
-	 * Returns the file processed in order to produce this dump.
-	 * 
-	 * @return the file processed
-	 */
-	File getFile();
-
-	/**
-	 * Returns the dump contents. Dump contents objects must have a 
-	 * <code>toString()</code>
-	 * implementation that returns meaningful, human-readable, representation for 
-	 * the contents.
-	 * 
-	 * @return an object representing the contents of the dumped file.
-	 */
-	Object getContents();
-
-	/**
-	 * Returns true if the file reading process ended due to a failure. If 
-	 * <code>getFailureReason()</code> does not return <code>null</code>, this 
-	 * method must return <code>true</code>.
-	 * 
-	 * @return true if the dumping process terminated due to a failure
-	 */
-	boolean isFailed();
-
-	/**
-	 * Returns the exception that caused the failure, or null if a failure did not 
-	 * happen.
-	 * 
-	 * @return the exception that caused the failure, or null if a 
-	 * failure did not happen.
-	 */
-	Exception getFailureReason();
-
-	/**
-	 * Returns the offset where dumper stopped reading the dumped file. Optionally 
-	 * implemented.
-	 * 
-	 * @return the number of bytes read
-	 */
-	long getOffset();
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/IDumper.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/IDumper.java
deleted file mode 100644
index eabd369..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/IDumper.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.metadata;
-
-import java.io.File;
-
-/**
- * A dumper is an object that knows how to process a given kind of file,
- * translating it to a human-readable form.
- */
-public interface IDumper {
-
-	/** 
-	 * Reads a given file and produces a dump object. Any exception that 
-	 * may occur during file processing must be caught and stored as 
-	 * failure reason in the IDump object returned.
-	 * 
-	 * @param file the file to be dumped
-	 * @return a dump object representing the contents of the file dumped
-	 */
-	IDump dump(File file);
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/IStringDumpingStrategy.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/IStringDumpingStrategy.java
deleted file mode 100644
index 8faf31f..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/IStringDumpingStrategy.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.metadata;
-
-import java.io.DataInputStream;
-import java.io.IOException;
-
-/**
- * A dumping strategy defines how a input stream will be dumped as a string.
- * A given dumper may use different strategies for reading different versions of 
- * a file it understands, or may even use different strategies for reading 
- * different segments of a same file.
- * 
- * @see org.eclipse.core.tools.metadata.AbstractDumper
- */
-public interface IStringDumpingStrategy {
-	/**
-	 * Dumps contents read from the provided stream.
-	 * Concrete implementations should not catch any exceptions. 
-	 * Concrete implementations should not close the input stream.
-	 * This method may read the entire input stream contents, or just part of it.
-	 * 
-	 * @param input the input stream where to dump contents from 
-	 * @return the contents read in string format, or null if no further reading should occur
-	 * @throws IOException an exception occurred while dumping the input stream 
-	 * @throws DumpException an exception occurred while dumping the input stream 
-	 */
-	public String dumpStringContents(DataInputStream input) throws IOException, DumpException;
-
-	/**
-	 * Returns a high-level description for the file format understood by this 
-	 * strategy.
-	 * 
-	 * @return a string describing the file format this strategy understands.
-	 */
-	public String getFormatDescription();
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/MetadataPerspective.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/MetadataPerspective.java
deleted file mode 100644
index 8e69af7..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/MetadataPerspective.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.metadata;
-
-import org.eclipse.ui.*;
-
-/**
- * A perspective for working with metadata files.
- */
-public class MetadataPerspective implements IPerspectiveFactory {
-	/**
-	 * Creates a layout containing the following views: Metadata Tree, Dump Contents
-	 * and Dump Summary, with no editor area.
-	 * 
-	 * @see org.eclipse.ui.IPerspectiveFactory#createInitialLayout(
-	 * org.eclipse.ui.IPageLayout)
-	 */
-	public void createInitialLayout(IPageLayout layout) {
-		String editorAreaId = layout.getEditorArea();
-
-		layout.setEditorAreaVisible(false);
-
-		IFolderLayout left = layout.createFolder("left", IPageLayout.LEFT, (float) 0.30, editorAreaId); //$NON-NLS-1$
-		left.addView(MetadataTreeView.VIEW_ID);
-
-		IFolderLayout right = layout.createFolder("right", IPageLayout.RIGHT, (float) 0.5, editorAreaId); //$NON-NLS-1$
-		right.addView(DumpContentsView.VIEW_ID);
-
-		IFolderLayout bottom = layout.createFolder("bottom", IPageLayout.BOTTOM, (float) 0.70, "right"); //$NON-NLS-1$ //$NON-NLS-2$
-		bottom.addView(DumpSummaryView.VIEW_ID);
-
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/MetadataTreeContentProvider.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/MetadataTreeContentProvider.java
deleted file mode 100644
index 5b4b63f..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/MetadataTreeContentProvider.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.metadata;
-
-import java.io.File;
-import java.io.FileFilter;
-import java.util.Arrays;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.core.tools.AbstractTreeContentProvider;
-import org.eclipse.core.tools.TreeContentProviderNode;
-import org.eclipse.jface.viewers.Viewer;
-
-/**
- * A tree content provider for Metadata view. Its input is a metadata directory,
- * the root directory from which Eclipse metadata files 
- * will be searched. The result is a tree containing directory that contains 
- * (any directories that contain) metadata files and the metadata files 
- * themselves.<br>
- * This content provider mantains its contents using 
- * <code>TreeContentProviderNode</code>
- * objects.
- * 
- * @see org.eclipse.core.tools.TreeContentProviderNode
- */
-public class MetadataTreeContentProvider extends AbstractTreeContentProvider {
-	/** 
-	 * The file filter. 
-	 * 
-	 * @see MetadataFileFilter
-	 */
-	private FileFilter fileFilter;
-
-	/** 
-	 * The directory filter. 
-	 * 
-	 * @see DirectoryFilter
-	 */
-	private FileFilter directoryFilter;
-
-	private MetadataTreeRebuilder treeRebuilder;
-
-	/**
-	 * Constructs a new content provider. 
-	 * 
-	 * @param registeredFileNames an array containing all metadata file names known 
-	 */
-	public MetadataTreeContentProvider(String[] registeredFileNames) {
-		super(true);
-		this.fileFilter = new MetadataFileFilter(registeredFileNames);
-		this.directoryFilter = new DirectoryFilter();
-		this.treeRebuilder = new MetadataTreeRebuilder();
-	}
-
-	/**
-	 * Returns true if the input is a <code>File</code> object pointing to 
-	 * a directory.
-	 * 
-	 * @return true if this input object is a <code>File</code> pointing to a 
-	 * directory.
-	 * @param input an input object 
-	 * @see org.eclipse.core.tools.AbstractTreeContentProvider#acceptInput(java.lang.Object)
-	 */
-	protected boolean acceptInput(Object input) {
-		return (input instanceof File) && ((File) input).isDirectory(); //$NON-NLS-1$
-	}
-
-	/**
-	 * Updates the data model for this content provider upon the provided input.
-	 * 
-	 * @param input a File object pointing to a metadata directory.
-	 * 
-	 * @see org.eclipse.core.tools.AbstractTreeContentProvider#rebuild(Viewer, Object)
-	 */
-	protected void rebuild(final Viewer viewer, final Object input) {
-		final File metadataRootDir = (File) input;
-		final TreeContentProviderNode metadataRootNode = makeNode(metadataRootDir);
-		getRootNode().addChild(metadataRootNode);
-		treeRebuilder.rebuild(viewer, metadataRootDir, metadataRootNode);
-	}
-
-	private class MetadataTreeRebuilder extends Job {
-		private File rootDir;
-		private TreeContentProviderNode rootNode;
-		private Viewer viewer;
-
-		public MetadataTreeRebuilder() {
-			super("Updating metadata tree"); //$NON-NLS-1$
-		}
-
-		protected IStatus run(IProgressMonitor monitor) {
-			try {
-				extractInfo(rootDir, rootNode, monitor);
-				return Status.OK_STATUS;
-			} finally {
-				final Viewer tmpViewer = viewer;
-				if (!tmpViewer.getControl().isDisposed())
-					tmpViewer.getControl().getDisplay().asyncExec(new Runnable() {
-						public void run() {
-							tmpViewer.refresh();
-						}
-					});
-			}
-		}
-
-		public synchronized void rebuild(Viewer viewer, File rootDir, TreeContentProviderNode rootNode) {
-			this.rootDir = rootDir;
-			this.rootNode = rootNode;
-			this.viewer = viewer;
-			cancel();
-			setName("Loading metadata tree from " + rootDir); //$NON-NLS-1$
-			schedule();
-		}
-	}
-
-	/**
-	 * Builds this content provider data model from a given root directory. This 
-	 * method operates recursively, adding a tree node for each file of a registered 
-	 * type it finds and for each directory that contains (any directories that 
-	 * contain) a file of a registered type. This method returns a boolean value 
-	 * indicating that it (or at least one of its sub dirs) contains files with one 
-	 * of the registered types (so its parent will include it too).
-	 * 
-	 * @param dir a directory potentially containing known metadata files.
-	 * @param dirNode the node corresponding to that directory 
-	 * @return true if the provided dir (or at least one of its sub dirs) 
-	 * contains files with one of the registered types, false otherwise
-	 */
-	boolean extractInfo(File dir, TreeContentProviderNode dirNode, IProgressMonitor monitor) {
-
-		if (monitor.isCanceled())
-			return false;
-
-		TreeContentProviderNode childNode;
-
-		monitor.beginTask("Scanning dir " + dir, 100); //$NON-NLS-1$
-		try {
-			// looks for files of registered types in this directory	
-			File[] selectedFiles = dir.listFiles(fileFilter);
-			monitor.worked(1);
-			Arrays.sort(selectedFiles);
-			for (int i = 0; i < selectedFiles.length; i++) {
-				childNode = makeNode(selectedFiles[i]);
-				dirNode.addChild(childNode);
-			}
-			// looks for files of registered types in its subdirectories
-			File[] subDirs = dir.listFiles(directoryFilter);
-			monitor.worked(1);
-			Arrays.sort(subDirs);
-
-			for (int i = 0; i < subDirs.length; i++) {
-				// constructs a node for each subdir...
-				childNode = makeNode(subDirs[i]);
-				if (extractInfo(subDirs[i], childNode, new SubProgressMonitor(monitor, 98 / subDirs.length)))
-					// ...but only adds them if they have files of registered types
-					dirNode.addChild(childNode);
-			}
-			// returns true if this dir has any file of any registered type
-			return selectedFiles.length > 0 || dirNode.hasChildren();
-		} finally {
-			monitor.done();
-		}
-	}
-
-	/**
-	 * Helper method that creates a new TreeContentroviderNode object given a File 
-	 * object.
-	 * 
-	 * @param file the file a node will created for
-	 * @return a <code>TreeContentProviderNode</code> 
-	 */
-	private TreeContentProviderNode makeNode(final File file) {
-		return new TreeContentProviderNode(file.getName(), file) {
-			// redefines toString so the root shows the full path while any other 
-			// node shows only the file / directory name
-			public String toString() {
-				return isRoot() ? file.getAbsolutePath() : file.getName();
-			}
-		};
-	}
-
-	/**
-	 * Filters accepted files (the ones who are registered in the DumperFactory).
-	 * 
-	 * @see MetadataTreeContentProvider#MetadataTreeContentProvider(String[]) 
-	 * @see java.io.FileFilter
-	 */
-	private class MetadataFileFilter implements FileFilter {
-		private String[] fileNames;
-
-		private MetadataFileFilter(String[] fileNames) {
-			this.fileNames = fileNames;
-			Arrays.sort(this.fileNames);
-		}
-
-		/**
-		 * @see java.io.FileFilter#accept(java.io.File)
-		 */
-		public boolean accept(File file) {
-			return file.isFile() && Arrays.binarySearch(fileNames, file.getName()) >= 0;
-		}
-	}
-
-	/**
-	 * Filters directories entries.
-	 * 
-	 * @see java.io.FileFilter
-	 */
-	private class DirectoryFilter implements FileFilter {
-		/**
-		 * @see java.io.FileFilter#accept(java.io.File)
-		 */
-		public boolean accept(File file) {
-			return file.isDirectory();
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/MetadataTreeView.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/MetadataTreeView.java
deleted file mode 100644
index c930109..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/MetadataTreeView.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.metadata;
-
-import java.io.File;
-import org.eclipse.core.tools.*;
-import org.eclipse.jface.action.*;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * Implements the Metadata Spy view. This view allows the user to browse the
- * known files under a specified directory. "Known files" are those whose names
- * are known by the DumperFactory, thus they can be dumped.
- */
-public class MetadataTreeView extends SpyView {
-
-	/** 
-	 * A JFace widget used to display a tree corresponding to the metadata
-	 * directory structure (containing only files of known types). 
-	 */
-	protected AbstractTreeViewer viewer;
-
-	/** The currently selected metadata dir. */
-	protected File metadataPath;
-
-	/** The id by which this view is known in the plug-in registry */
-	public static final String VIEW_ID = MetadataTreeView.class.getName();
-
-	/**
-	 * Dump file action implementation.
-	 */
-	private class DumpFileAction extends Action {
-		/**
-		 * Constructs a DumpFileAction, initializing text and tool tip text.
-		 */
-		DumpFileAction() {
-			this.setText("Dump Selected File"); //$NON-NLS-1$
-			this.setToolTipText("Dump selected file"); //$NON-NLS-1$
-		}
-
-		/**
-		 * This action activates the Dump Contents view with the current selected
-		 * file in this view (if any)
-		 *
-		 * @see org.eclipse.jface.action.IAction#run()
-		 */
-		public void run() {
-			IStructuredSelection sel = (IStructuredSelection) MetadataTreeView.this.viewer.getSelection();
-			if (sel == null || sel.isEmpty())
-				return;
-
-			TreeContentProviderNode fileNode = (TreeContentProviderNode) sel.getFirstElement();
-
-			File file = (File) fileNode.getValue();
-			// we have no interest in directories
-			if (!file.isFile())
-				return;
-
-			try {
-				DumpContentsView dumpView = (DumpContentsView) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(DumpContentsView.VIEW_ID);
-				dumpView.setFile(file);
-			} catch (PartInitException e) {
-				ErrorUtil.showErrorMessage(e.getMessage(), "Error opening view"); //$NON-NLS-1$
-				ErrorUtil.logException(e, "Error opening view"); //$NON-NLS-1$
-			}
-		}
-	}
-
-	/**
-	 * Select metadata root action implementation.
-	 */
-	private class SelectMetadataLocationAction extends Action {
-		/**
-		 * Initializes action's text and tool tip text.
-		 */
-		SelectMetadataLocationAction() {
-			this.setText("Select metadata location..."); //$NON-NLS-1$
-			this.setToolTipText("Select metadata location..."); //$NON-NLS-1$
-		}
-
-		/**
-		 * Executes action, opening a file dialog so the user can select which
-		 * metadata directory will be browsed.
-		 *
-		 * @see org.eclipse.jface.action.IAction#run()
-		 */
-		public void run() {
-			DirectoryDialog dirDialog = new DirectoryDialog(viewer.getControl().getShell());
-
-			dirDialog.setText("Open a metadata directory"); //$NON-NLS-1$
-			dirDialog.setMessage("Please choose a directory where to look for metadata files"); //$NON-NLS-1$
-			if (metadataPath != null)
-				dirDialog.setFilterPath(metadataPath.getAbsolutePath());
-
-			String dirPath = dirDialog.open();
-
-			if (dirPath == null)
-				return;
-
-			setMetadataRoot(new File(dirPath));
-		}
-	}
-
-	/**
-	 * Creates this view widget and actions.
-	 * 
-	 * @param parent the parent control
-	 * @see org.eclipse.ui.IWorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
-	 */
-	public void createPartControl(Composite parent) {
-		viewer = new TreeViewer(parent);
-
-		// sets a content provider for the viewer
-		DumperFactory factory = DumperFactory.getInstance();
-		String[] fileNames = factory.getRegisteredFileNames();
-		viewer.setContentProvider(new MetadataTreeContentProvider(fileNames));
-
-		// creates actions
-		final IAction dumpFileAction = new DumpFileAction();
-		final IAction selectMetadataLocationAction = new SelectMetadataLocationAction();
-
-		// adds actions to the menu bar
-		IMenuManager barMenuManager = getViewSite().getActionBars().getMenuManager();
-		barMenuManager.add(selectMetadataLocationAction);
-		barMenuManager.add(dumpFileAction);
-
-		// creates a context menu with actions and adds it to the viewer control
-		MenuManager menuMgr = new MenuManager();
-		menuMgr.add(selectMetadataLocationAction);
-		menuMgr.add(dumpFileAction);
-
-		Menu menu = menuMgr.createContextMenu(viewer.getControl());
-		viewer.getControl().setMenu(menu);
-
-		// associates double-click to dump file action
-		viewer.addDoubleClickListener(new IDoubleClickListener() {
-			public void doubleClick(DoubleClickEvent event) {
-				dumpFileAction.run();
-			}
-		});
-	}
-
-	/**
-	 * Rebuilds the viewer content provider.
-	 * 
-	 * @param file
-	 * @see WorkspaceContentProvider#inputChanged(Viewer, Object, Object)
-	 */
-	protected void setMetadataRoot(final File file) {
-		if (file == null)
-			return;
-		if (!file.isDirectory()) {
-			ErrorUtil.showErrorMessage("Selected item is not a directory", "Error selecting metadata location"); //$NON-NLS-1$ //$NON-NLS-2$
-			return;
-		}
-		metadataPath = file;
-		viewer.setInput(file);
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/MeteredInputStream.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/MeteredInputStream.java
deleted file mode 100644
index 2776d38..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/MeteredInputStream.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.metadata;
-
-import java.io.*;
-
-/**
- * An input stream that counts how many bytes have been read.
- */
-public class MeteredInputStream extends PushbackInputStream {
-
-	/** The current number of bytes read. */
-	private long offset;
-
-	/**
-	 * Constructs a metered input stream chained to the given source input stream.
-	 * 
-	 * @param in the input stream from where to read data
-	 */
-	public MeteredInputStream(InputStream in) {
-		super(in);
-	}
-
-	/**
-	 * Forwards the call to the super class, incrementing the offset if a 
-	 * byte is successfully read.
-	 * 
-	 * @return the next byte or <code>-1</code> if there is more data to be read.
-	 * @throws IOException if a failure occurs while reading the input stream 
-	 * @see java.io.PushbackInputStream#read()
-	 */
-	public int read() throws IOException {
-		int byteRead = super.read();
-		if (byteRead >= 0)
-			offset++;
-		return byteRead;
-	}
-
-	/**
-	 * Forwards the call to the super class, incrementing the current offset
-	 * by the number of bytes read.
-	 * 
-	 * @param b an array containing bytes to be read 
-	 * @return the number of bytes read.
-	 * @throws IOException if a failure occurs while reading the input stream
-	 * @see java.io.PushbackInputStream#read(byte[])
-	 */
-	public int read(byte[] b) throws IOException {
-		return read(b, 0, b.length);
-	}
-
-	/**
-	 * Forwards the call to the super class, incrementing the current offset
-	 * by the number of bytes read.
-	 * 
-	 * @param b an array containing bytes to be read
-	 * @param off the array offset where bytes will be read to
-	 * @param len the number of bytes to be read 
-	 * @return the number of bytes read
-	 * @throws IOException if a failure occurs while reading the input stream
-	 * @see java.io.PushbackInputStream#read(byte[], int, int)
-	 */
-	public int read(byte[] b, int off, int len) throws IOException {
-		int read = super.read(b, off, len);
-		if (read > 0)
-			offset += read;
-		return read;
-	}
-
-	/**
-	 * Returns the current offset value.
-	 * 
-	 * @return long the current number of bytes read
-	 */
-	public long getOffset() {
-		return offset;
-	}
-
-	/**
-	 * Forwards the call to the underlying input stream, decrementing the offset by
-	 * the number of bytes unread.
-	 * 
-	 * @param b an array containing bytes to be unread 
-	 * @throws IOException if a failure occurs
-	 * @see java.io.PushbackInputStream#unread(byte)
-	 */
-	public void unread(byte[] b) throws IOException {
-		super.unread(b);
-		offset -= b.length;
-	}
-
-	/**
-	 * Forwards the call to the underlying input stream, decrementing the offset by
-	 * the number of bytes unread.
-	 * 
-	 * @param b an array containing bytes to be unread
-	 * @param off the array offset from where bytes will be unread
-	 * @param len the number of bytes to be unread 
-	 * @throws IOException if a failure occurs
-	 * @see PushbackInputStream#unread(byte[], int, int)
-	 */
-	public void unread(byte[] b, int off, int len) throws IOException {
-		super.unread(b, off, len);
-		offset -= len;
-	}
-
-	/**
-	 * Forwards the call to the underlying push back input stream, decrementing the 
-	 * offset if a 
-	 * byte is successfully unread.
-	 * 
-	 * @param b the byte to be unread
-	 * @throws IOException if a failure occurs
-	 * @see PushbackInputStream#unread(byte[])
-	 */
-	public void unread(int b) throws IOException {
-		super.unread(b);
-		offset--;
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/MultiStrategyDumper.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/MultiStrategyDumper.java
deleted file mode 100644
index 89c4705..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/MultiStrategyDumper.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.metadata;
-
-import java.io.*;
-
-/**
- * Subclasses must provide a concrete 
- * implementation for <code>getStringDumpingStrategy(InputStream)</code> method.
- */
-public abstract class MultiStrategyDumper extends AbstractDumper {
-
-	/**
-	 * <p>Subclasses must implement 
-	 * <code>getStringDumpingStrategy(InputStream)</code> in order to select the 
-	 * real dumping behaviour. This method will call 
-	 * <code>IStringDumpingStrategy#dumpStringContents(DataInputStream)</code> on 
-	 * the returned strategy. If, after calling that method,  there are still bytes 
-	 * to be read in the input stream, 
-	 * <code>getStringDumpingStrategy(InputStream)</code> will be called again in 
-	 * order to select another strategy to read the remaining contents, and so on.
-	 * </p> 
-	 * 
-	 * @param file the file to be dumped
-	 * @return a dump object representing the contents of the dumped file
-	 * @see org.eclipse.core.tools.metadata.IDumper#dump(java.io.File)
-	 * @see #getStringDumpingStrategy(DataInputStream)
-	 * @see IStringDumpingStrategy#dumpStringContents(DataInputStream)
-	 * @see #openInputStream(File)
-	 */
-	protected final void dumpContents(PushbackInputStream input, StringBuffer contents) throws IOException, Exception, DumpException {
-		DataInputStream dataInput = new DataInputStream(input);
-		int c;
-		while ((c = input.read()) != -1) {
-			input.unread(c);
-			IStringDumpingStrategy strategy = getStringDumpingStrategy(dataInput);
-			String dumpedContents = strategy.dumpStringContents(dataInput);
-			if (dumpedContents == null)
-				break;
-			contents.append("Format: "); //$NON-NLS-1$
-			contents.append(strategy.getFormatDescription());
-			contents.append("\n\n"); //$NON-NLS-1$
-			contents.append(dumpedContents);
-			contents.append("\n"); //$NON-NLS-1$                          
-		}
-		if (contents.length() == 0)
-			contents.append("No contents\n"); //$NON-NLS-1$
-	}
-
-	/**
-	 * Returns a <code>IStringDumpingStrategy</code> object. Subclasses must provide 
-	 * a concrete implementation for this method. The input stream is connected to 
-	 * the file being dumped. If needed, implementations may consume the input 
-	 * stream in order to choose a strategy.
-	 * 
-	 * @param input the input stream being read
-	 * @return  a <code>IStringDumpingStrategy</code> object
-	 * @throws Exception any exceptions occurred during input stream reading must 
-	 * NOT be caught
-	 */
-	protected abstract IStringDumpingStrategy getStringDumpingStrategy(DataInputStream input) throws Exception;
-
-	/**
-	 * Opens an input stream connected to the file object provided. Provides an 
-	 * opportunity for subclasses to select a different input stream class. By 
-	 * default, returns a <code>FileInputStream</code> object.
-	 * 
-	 * @param file the file to be opened
-	 * @return an input stream connected to the file provided as 
-	 * argument
-	 * @throws IOException if an exception happens while opening the inpuut stream
-	 */
-	protected InputStream openInputStream(File file) throws IOException {
-		return new FileInputStream(file);
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/PartialDumpException.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/PartialDumpException.java
deleted file mode 100644
index fa33e77..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/PartialDumpException.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.metadata;
-
-public class PartialDumpException extends DumpException {
-
-	private static final long serialVersionUID = 1L;
-	/**
-	 * Data read when the error happened. May be 
-	 * null. 
-	 */
-	private Object partialContents;
-
-	public PartialDumpException(String msg, Object partialContents) {
-		super(msg);
-		this.partialContents = partialContents;
-	}
-
-	public PartialDumpException(String msg, Throwable cause, Object partialContents) {
-		super(msg, cause);
-		this.partialContents = partialContents;
-	}
-
-	/**
-	 * Returns the contents partially read when this exception occurred. May 
-	 * return <code>null</code>.
-	 * 
-	 * @return the contents partially read, or <code>null</code> 
-	 */
-	public Object getPartialContents() {
-		return partialContents;
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/StateDumper.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/StateDumper.java
deleted file mode 100644
index a1b3d3d..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/metadata/StateDumper.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.metadata;
-
-import java.io.*;
-import java.io.IOException;
-import java.io.PushbackInputStream;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.osgi.service.resolver.*;
-
-public class StateDumper extends AbstractDumper {
-
-	protected void dumpContents(PushbackInputStream input, StringBuffer contents) throws IOException, Exception, DumpException {
-		PlatformAdmin admin = Platform.getPlatformAdmin();
-		// use the deprecated API to support running against a 3.0 Eclipse
-		State state = admin.getFactory().readState(new DataInputStream(input));
-		contents.append("State resolved: "); //$NON-NLS-1$
-		contents.append(state.isResolved());
-		contents.append("\n"); //$NON-NLS-1$
-		BundleDescription[] allBundles = state.getBundles();
-		admin.getStateHelper().sortBundles(allBundles);
-		for (int i = 0; i < allBundles.length; i++)
-			dumpBundle(allBundles[i], contents);
-	}
-
-	private void dumpBundle(BundleDescription bundle, StringBuffer contents) {
-		contents.append("\n"); //$NON-NLS-1$
-		contents.append("Bundle: "); //$NON-NLS-1$
-		contents.append(bundle.getSymbolicName());
-		contents.append('_');
-		contents.append(bundle.getVersion());
-		contents.append(" ("); //$NON-NLS-1$
-		contents.append(bundle.isResolved() ? "resolved" : "unresolved"); //$NON-NLS-1$ //$NON-NLS-2$
-		if (bundle.isSingleton())
-			contents.append(", singleton"); //$NON-NLS-1$
-		contents.append(")\n"); //$NON-NLS-1$
-		HostSpecification host = bundle.getHost();
-		if (host != null)
-			dumpHost(host, contents);
-		BundleSpecification[] required = bundle.getRequiredBundles();
-		for (int i = 0; i < required.length; i++)
-			dumpRequired(required[i], contents);
-	}
-
-	private void dumpRequired(BundleSpecification required, StringBuffer contents) {
-		contents.append("\tRequired: "); //$NON-NLS-1$
-		contents.append(required.getName());
-		contents.append(" - Version: "); //$NON-NLS-1$
-		contents.append(required.getVersionRange());
-		contents.append(" ("); //$NON-NLS-1$
-		contents.append(required.isResolved() ? ("actual: "+ required.getSupplier().getVersion().toString()) : "unresolved"); //$NON-NLS-1$ //$NON-NLS-2$
-		if (required.isOptional())
-			contents.append(", optional"); //$NON-NLS-1$
-		contents.append(')');		
-		contents.append('\n');
-	}
-
-	private void dumpHost(HostSpecification host, StringBuffer contents) {
-		contents.append("\tHost: "); //$NON-NLS-1$
-		contents.append(host.getName());
-		contents.append(" - Version: "); //$NON-NLS-1$
-		contents.append(host.getVersionRange());
-		contents.append(" ("); //$NON-NLS-1$
-		contents.append(host.isResolved() ? ("actual: "+ host.getSupplier().getVersion().toString()) : "unresolved");		 //$NON-NLS-1$ //$NON-NLS-2$
-		contents.append(')');
-		contents.append('\n');
-	}
-
-	public String getFormatDescription() {
-		return "Framework state"; //$NON-NLS-1$
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/ConvertMessageBundleAction.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/ConvertMessageBundleAction.java
deleted file mode 100644
index 3040b24..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/ConvertMessageBundleAction.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.nls;
-
-import java.lang.reflect.InvocationTargetException;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jdt.core.ICompilationUnit;
-import org.eclipse.jdt.internal.ui.actions.WorkbenchRunnableAdapter;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ltk.core.refactoring.CheckConditionsOperation;
-import org.eclipse.ltk.core.refactoring.PerformRefactoringOperation;
-import org.eclipse.ui.*;
-
-public class ConvertMessageBundleAction implements IObjectActionDelegate {
-
-	private ICompilationUnit fAccessorUnit;
-	private IWorkbenchPart fPart;
-
-	public void setActivePart(IAction action, IWorkbenchPart part) {
-		fPart = part;
-	}
-
-	public void run(IAction action) {
-		if (fAccessorUnit == null)
-			return;
-		try {
-			final GotoResourceAction pAction = new GotoResourceAction(fPart);
-			IRunnableWithProgress runnable = new IRunnableWithProgress() {
-				public void run(IProgressMonitor monitor) {
-					pAction.run();
-				}
-			};
-			PlatformUI.getWorkbench().getProgressService().run(false, false, runnable);
-			IFile propertiesFile = (IFile) pAction.getResource();
-			if (propertiesFile == null)
-				return;
-			MessageBundleRefactoring refactoring = new MessageBundleRefactoring(fAccessorUnit.getTypes()[0], propertiesFile);
-			PerformRefactoringOperation op = new PerformRefactoringOperation(refactoring, CheckConditionsOperation.ALL_CONDITIONS);
-			PlatformUI.getWorkbench().getProgressService().run(false, false, new WorkbenchRunnableAdapter(op));
-		} catch (CoreException e) {
-			throw new RuntimeException(e);
-		} catch (InterruptedException e) {
-			throw new RuntimeException(e);
-		} catch (InvocationTargetException e) {
-			throw new RuntimeException(e);
-		}
-
-	}
-
-	public void selectionChanged(IAction action, ISelection selection) {
-		Object element = ((IStructuredSelection) selection).getFirstElement();
-		if (element instanceof ICompilationUnit) {
-			fAccessorUnit = (ICompilationUnit) element;
-		}
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/GotoResourceAction.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/GotoResourceAction.java
deleted file mode 100644
index 2b1c05e..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/GotoResourceAction.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.nls;
-
-import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jdt.core.IJavaModel;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jface.action.Action;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.dialogs.ResourceListSelectionDialog;
-
-public class GotoResourceAction extends Action {
-	IResource selectedResource;
-	IWorkbenchPart part;
-
-	private static class GotoResourceDialog extends ResourceListSelectionDialog {
-		private IJavaModel fJavaModel;
-
-		public GotoResourceDialog(Shell parentShell, IContainer container) {
-			super(parentShell, container, IResource.FILE | IResource.FOLDER | IResource.PROJECT);
-			fJavaModel = JavaCore.create(ResourcesPlugin.getWorkspace().getRoot());
-			setTitle("Select the corresponding properties file:"); //$NON-NLS-1$
-		}
-
-		protected boolean select(IResource resource) {
-			IProject project = resource.getProject();
-			try {
-				if (project.getNature(JavaCore.NATURE_ID) != null)
-					return fJavaModel.contains(resource);
-			} catch (CoreException e) {
-				// do nothing. Consider resource;
-			}
-			return true;
-		}
-	}
-
-	public IResource getResource() {
-		return selectedResource;
-	}
-
-	public GotoResourceAction(IWorkbenchPart part) {
-		this.part = part;
-		setText("Select the corresponding properties file:"); //$NON-NLS-1$
-	}
-
-	public void run() {
-		GotoResourceDialog dialog = new GotoResourceDialog(part.getSite().getShell(), ResourcesPlugin.getWorkspace().getRoot());
-		dialog.open();
-		Object[] result = dialog.getResult();
-		if (result == null || result.length == 0 || !(result[0] instanceof IResource))
-			return;
-		selectedResource = (IResource) result[0];
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/IntegerMap.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/IntegerMap.java
deleted file mode 100644
index b23507e..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/IntegerMap.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.nls;
-
-public class IntegerMap {
-
-	private static final int DEFAULT = 0;
-	private static final int GROW_SIZE = 10;
-
-	private int[] keys;
-	private int[] values;
-
-	public IntegerMap(int size) {
-		super();
-		keys = new int[size];
-		values = new int[size];
-	}
-
-	public int get(int key) {
-		for (int i = 0; i < keys.length; i++) {
-			int current = keys[i];
-			if (current != 0 && current == key)
-				return values[i];
-		}
-		return DEFAULT;
-	}
-
-	public void put(int key, int value) {
-
-		// replace if exists
-		int emptySlot = -1;
-		for (int i = 0; i < keys.length; i++) {
-			int current = keys[i];
-			if (current == 0) {
-				emptySlot = i;
-				continue;
-			} else if (current == key) {
-				values[i] = value;
-				return;
-			}
-		}
-
-		// grow if needed, then fill the empty slot
-		if (emptySlot == -1)
-			emptySlot = grow();
-		keys[emptySlot] = key;
-		values[emptySlot] = value;
-	}
-
-	private int grow() {
-		int size = keys.length;
-		int[] tempKeys = new int[size + GROW_SIZE];
-		System.arraycopy(keys, 0, tempKeys, 0, size);
-		keys = tempKeys;
-		int[] tempValues = new int[size + GROW_SIZE];
-		System.arraycopy(values, 0, tempValues, 0, size);
-		values = tempValues;
-		return size;
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/MessageBundleRefactoring.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/MessageBundleRefactoring.java
deleted file mode 100644
index 1ffcbab..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/MessageBundleRefactoring.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.nls;
-
-import java.io.IOException;
-import java.util.List;
-import org.eclipse.core.filebuffers.*;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.*;
-import org.eclipse.jdt.core.*;
-import org.eclipse.jdt.core.dom.*;
-import org.eclipse.jdt.core.dom.rewrite.ASTRewrite;
-import org.eclipse.jdt.core.search.IJavaSearchConstants;
-import org.eclipse.jdt.core.search.SearchPattern;
-import org.eclipse.jdt.internal.corext.dom.Bindings;
-import org.eclipse.jdt.internal.corext.refactoring.RefactoringScopeFactory;
-import org.eclipse.jdt.internal.corext.refactoring.RefactoringSearchEngine;
-import org.eclipse.jdt.internal.corext.refactoring.changes.CompilationUnitChange;
-import org.eclipse.jdt.internal.corext.refactoring.util.RefactoringASTParser;
-import org.eclipse.jdt.internal.corext.refactoring.util.RefactoringFileBuffers;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.ltk.core.refactoring.*;
-
-public class MessageBundleRefactoring extends Refactoring {
-
-	IType fAccessorClass;
-	IFile fPropertiesFile;
-	CompositeChange fChange;
-	ITypeBinding fAccessorTypeBinding;
-
-	public MessageBundleRefactoring(IType accessorClass, IFile propertiesFile) {
-		super();
-		fAccessorClass = accessorClass;
-		fPropertiesFile = propertiesFile;
-	}
-
-	public String getName() {
-		return "Message Bundle Refactoring";
-	}
-
-	public RefactoringStatus checkInitialConditions(IProgressMonitor monitor) throws CoreException, OperationCanceledException {
-		return new RefactoringStatus();
-	}
-
-	public RefactoringStatus checkFinalConditions(IProgressMonitor monitor) throws CoreException, OperationCanceledException {
-		RefactoringStatus result = new RefactoringStatus();
-		fAccessorTypeBinding = computeAccessorClassBinding(new SubProgressMonitor(monitor, 1));
-		if (fAccessorTypeBinding == null) {
-			result.addFatalError("Couldn't resolve accessor class");
-			return result;
-		}
-		fChange = new CompositeChange("Accessor Class Changes");
-		ICompilationUnit[] affectedUnits = RefactoringSearchEngine.findAffectedCompilationUnits(SearchPattern.createPattern(fAccessorClass, IJavaSearchConstants.REFERENCES), RefactoringScopeFactory.create(fAccessorClass), new SubProgressMonitor(monitor, 5), result);
-		monitor.beginTask("", affectedUnits.length + 1);
-		for (int i = 0; i < affectedUnits.length; i++) {
-			ICompilationUnit unit = affectedUnits[i];
-			if (unit.equals(fAccessorClass.getCompilationUnit()))
-				continue;
-			processCompilationUnit(result, unit, new SubProgressMonitor(monitor, 1));
-		}
-		processPropertiesFile(result, new SubProgressMonitor(monitor, 1));
-		return result;
-	}
-
-	private void processPropertiesFile(RefactoringStatus result, IProgressMonitor monitor) throws CoreException {
-		// TODO need to roll the changes to the properties file into a text edit that we can hook into
-		// the "Undo -> Refactoring" framework
-		try {
-			ITextFileBufferManager manager = FileBuffers.getTextFileBufferManager();
-			try {
-				manager.connect(fPropertiesFile.getFullPath(), null);
-				manager.connect(fAccessorClass.getCompilationUnit().getCorrespondingResource().getFullPath(), null);
-				fChange.addAll(new PropertyFileConverter().convertFile(fAccessorClass, fPropertiesFile));
-			} finally {
-				manager.disconnect(fPropertiesFile.getFullPath(), null);
-				manager.disconnect(fAccessorClass.getCompilationUnit().getCorrespondingResource().getFullPath(), null);
-			}
-		} catch (IOException e) {
-			throw new CoreException(new Status(IStatus.ERROR, NLSPlugin.PI_NLS, IStatus.ERROR, e.getMessage(), e));
-		}
-	}
-
-	private void processCompilationUnit(RefactoringStatus result, ICompilationUnit unit, IProgressMonitor monitor) throws CoreException {
-		monitor.beginTask("", 2);
-		CompilationUnit root = new RefactoringASTParser(AST.JLS3).parse(unit, true, new SubProgressMonitor(monitor, 1));
-		ASTRewrite rewriter = ASTRewrite.create(root.getAST());
-
-		processAST(result, root, rewriter, new SubProgressMonitor(monitor, 1));
-
-		CompilationUnitChange change = new CompilationUnitChange(unit.getElementName(), unit);
-		try {
-			ITextFileBuffer buffer = RefactoringFileBuffers.acquire(unit);
-			IDocument document = buffer.getDocument();
-			change.setEdit(rewriter.rewriteAST(document, null));
-		} finally {
-			RefactoringFileBuffers.release(unit);
-		}
-		fChange.add(change);
-		monitor.done();
-	}
-
-	private void processAST(RefactoringStatus result, final CompilationUnit root, final ASTRewrite rewriter, SubProgressMonitor monitor) {
-		// keep track of the number of changes we make per line so we can get rid of the NLS comments.
-		final IntegerMap map = new IntegerMap(10);
-		ASTVisitor visitor = new ASTVisitor() {
-			public boolean visit(MethodInvocation node) {
-				Name messageBundleName = getMessageBundleReceiver(node);
-				if (messageBundleName == null)
-					return true;
-				IMethodBinding method = node.resolveMethodBinding();
-				// TODO here we have to do some checks whether the called method on the
-				// resource bundle is something we have to rewrite. This depends on
-				// the kind of the bundle and needs some AI.
-				ITypeBinding[] params = method.getParameterTypes();
-				if (params.length == 0)
-					return true;
-				if (!"java.lang.String".equals(params[0].getQualifiedName()))
-					return true;
-				List args = node.arguments();
-				if (args.size() != 1)
-					return true;
-				Object obj = args.get(0);
-				if (!(obj instanceof StringLiteral))
-					return true;
-				// compute the key of the message property
-				StringLiteral string = (StringLiteral) obj;
-				String key = PropertyFileConverter.convertToJavaIdentifier(string.getLiteralValue());
-
-				// create the field access object
-				FieldAccess fieldAccess = root.getAST().newFieldAccess();
-				fieldAccess.setExpression((Expression) rewriter.createCopyTarget(messageBundleName));
-				fieldAccess.setName(root.getAST().newSimpleName(key));
-
-				// replace the method invocation with the field access
-				rewriter.replace(node, fieldAccess, null);
-				int line = 11;
-				int value = map.get(line);
-				value++;
-				map.put(line, value);
-				return true;
-			}
-
-			private Name getMessageBundleReceiver(MethodInvocation node) {
-				Expression expression = node.getExpression();
-				if (expression == null)
-					return null;
-				if (expression instanceof Name && Bindings.equals(fAccessorTypeBinding, ((Name) expression).resolveBinding())) {
-					return (Name) expression;
-				}
-				return null;
-			}
-		};
-		root.accept(visitor);
-
-		// create another visitor to trim the //$NON-NLS-N$ comments
-		//		visitor = new ASTVisitor() {
-		//			public boolean visit(LineComment node) {
-		//				return true;
-		//			}
-		//		};
-		//		root.accept(visitor);
-	}
-
-	public Change createChange(IProgressMonitor monitor) throws CoreException, OperationCanceledException {
-		return fChange;
-	}
-
-	private ITypeBinding computeAccessorClassBinding(IProgressMonitor monitor) {
-		ASTParser parser = ASTParser.newParser(AST.JLS3);
-		parser.setProject(fAccessorClass.getJavaProject());
-		return (ITypeBinding) parser.createBindings(new IJavaElement[] {fAccessorClass}, monitor)[0];
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/NLSFileChange.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/NLSFileChange.java
deleted file mode 100644
index 8ba958f..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/NLSFileChange.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.nls;
-
-import java.io.*;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.ltk.core.refactoring.RefactoringStatus;
-import org.eclipse.ltk.core.refactoring.TextFileChange;
-
-public class NLSFileChange extends TextFileChange {
-	private IFile file;
-	private String contents;
-
-	public NLSFileChange(IFile file) {
-		super("Message bundle properties file change", file); //$NON-NLS-1$
-		this.file = file;
-		setTextType("text"); //$NON-NLS-1$
-	}
-
-	public RefactoringStatus isValid(IProgressMonitor pm) throws OperationCanceledException {
-		return RefactoringStatus.create(Status.OK_STATUS);
-	}
-
-	void setContents(String text) {
-		this.contents = text;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ltk.core.refactoring.TextFileChange#commit(org.eclipse.jface.text.IDocument, org.eclipse.core.runtime.IProgressMonitor)
-	 */
-	protected void commit(IDocument document, IProgressMonitor monitor) throws CoreException {
-		if (contents == null) {
-			System.err.println("Cannot write null contents to file: " + file); //$NON-NLS-1$
-			return;
-		}
-		byte[] bytes = null;
-		try {
-			bytes = contents.getBytes(file.getCharset(true));
-		} catch (UnsupportedEncodingException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-		if (bytes == null)
-			bytes = contents.getBytes();
-		InputStream input = new BufferedInputStream(new ByteArrayInputStream(bytes));
-		file.setContents(input, IResource.FORCE, null);
-	}
-
-	/* (non-Javadoc)
-	 * @see Change#getModifiedElement()
-	 */
-	public Object getModifiedElement() {
-		return file;
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/NLSPlugin.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/NLSPlugin.java
deleted file mode 100644
index 5502911..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/NLSPlugin.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package org.eclipse.core.tools.nls;
-
-import org.eclipse.ui.plugin.*;
-import org.osgi.framework.BundleContext;
-import java.util.*;
-
-/**
- * The main plugin class to be used in the desktop.
- */
-public class NLSPlugin extends AbstractUIPlugin {
-	//The shared instance.
-	private static NLSPlugin plugin;
-	//Resource bundle.
-	private ResourceBundle resourceBundle;
-	
-	public static final String PI_NLS = "com.example.nls"; //$NON-NLS-1$
-	
-	/**
-	 * The constructor.
-	 */
-	public NLSPlugin() {
-		super();
-		plugin = this;
-	}
-
-	/**
-	 * This method is called upon plug-in activation
-	 */
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-	}
-
-	/**
-	 * This method is called when the plug-in is stopped
-	 */
-	public void stop(BundleContext context) throws Exception {
-		super.stop(context);
-		plugin = null;
-		resourceBundle = null;
-	}
-
-	/**
-	 * Returns the shared instance.
-	 */
-	public static NLSPlugin getDefault() {
-		return plugin;
-	}
-
-	/**
-	 * Returns the string from the plugin's resource bundle,
-	 * or 'key' if not found.
-	 */
-	public static String getResourceString(String key) {
-		ResourceBundle bundle = NLSPlugin.getDefault().getResourceBundle();
-		try {
-			return (bundle != null) ? bundle.getString(key) : key;
-		} catch (MissingResourceException e) {
-			return key;
-		}
-	}
-
-	/**
-	 * Returns the plugin's resource bundle,
-	 */
-	public ResourceBundle getResourceBundle() {
-		try {
-			if (resourceBundle == null)
-				resourceBundle = ResourceBundle.getBundle("com.example.nls.NlsPluginResources");
-		} catch (MissingResourceException x) {
-			resourceBundle = null;
-		}
-		return resourceBundle;
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/PropertyFileConverter.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/PropertyFileConverter.java
deleted file mode 100644
index 66c186f..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/PropertyFileConverter.java
+++ /dev/null
@@ -1,331 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2005 IBM Corporation and others. All rights reserved.   This
- * program and the accompanying materials are made available under the terms of
- * the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: 
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.core.tools.nls;
-
-import java.io.*;
-import java.util.HashSet;
-import java.util.List;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jdt.core.IType;
-import org.eclipse.ltk.core.refactoring.Change;
-
-/**
- * Converts a message bundle file to the new format, and generates a Java
- * file with fields for each key in the bundle.
- */
-public class PropertyFileConverter {
-
-	private static final HashSet keywords = new HashSet();
-
-	static {
-		keywords.add("abstract"); //$NON-NLS-1$
-		keywords.add("assert"); //$NON-NLS-1$
-		keywords.add("break"); //$NON-NLS-1$
-		keywords.add("case"); //$NON-NLS-1$
-		keywords.add("catch"); //$NON-NLS-1$
-		keywords.add("class"); //$NON-NLS-1$
-		keywords.add("continue"); //$NON-NLS-1$
-		keywords.add("default"); //$NON-NLS-1$
-		keywords.add("do"); //$NON-NLS-1$
-		keywords.add("else"); //$NON-NLS-1$
-		keywords.add("extends"); //$NON-NLS-1$
-		keywords.add("final"); //$NON-NLS-1$
-		keywords.add("finally"); //$NON-NLS-1$
-		keywords.add("for"); //$NON-NLS-1$
-		keywords.add("if"); //$NON-NLS-1$
-		keywords.add("implements"); //$NON-NLS-1$
-		keywords.add("import"); //$NON-NLS-1$
-		keywords.add("instanceof"); //$NON-NLS-1$
-		keywords.add("interface"); //$NON-NLS-1$
-		keywords.add("native"); //$NON-NLS-1$
-		keywords.add("new"); //$NON-NLS-1$
-		keywords.add("package"); //$NON-NLS-1$
-		keywords.add("private"); //$NON-NLS-1$
-		keywords.add("protected"); //$NON-NLS-1$
-		keywords.add("public"); //$NON-NLS-1$
-		keywords.add("return"); //$NON-NLS-1$
-		keywords.add("static"); //$NON-NLS-1$
-		keywords.add("strictfp"); //$NON-NLS-1$
-		keywords.add("super"); //$NON-NLS-1$
-		keywords.add("switch"); //$NON-NLS-1$
-		keywords.add("synchronized"); //$NON-NLS-1$
-		keywords.add("this"); //$NON-NLS-1$
-		keywords.add("throw"); //$NON-NLS-1$
-		keywords.add("throws"); //$NON-NLS-1$
-		keywords.add("transient"); //$NON-NLS-1$
-		keywords.add("try"); //$NON-NLS-1$
-		keywords.add("volatile"); //$NON-NLS-1$
-		keywords.add("while"); //$NON-NLS-1$
-		keywords.add("true"); //$NON-NLS-1$
-		keywords.add("false"); //$NON-NLS-1$
-		keywords.add("null"); //$NON-NLS-1$
-	}
-
-	/**
-	 * Appends the text to put at the end of each Java messages file.
-	 */
-	private void appendPostText(StringBuffer buffer, String bundlePath, String typeName) {
-		buffer.append("\n\tstatic {\n"); //$NON-NLS-1$
-		buffer.append("\t\t// load message values from bundle file\n"); //$NON-NLS-1$
-		buffer.append("\t\tNLS.initializeMessages(BUNDLE_NAME, "); //$NON-NLS-1$
-		buffer.append(typeName);
-		buffer.append(".class"); //$NON-NLS-1$
-		buffer.append(");\n"); //$NON-NLS-1$
-		buffer.append("\t}\n"); //$NON-NLS-1$
-		buffer.append("}"); //$NON-NLS-1$
-	}
-
-	/**
-	 * Appends the text to put at the beginning of each Java messages file.
-	 */
-	private void appendPreText(StringBuffer buffer, String pkgName, String bundleName, String typeName) {
-		//if this text had typos, would it be a false pretext?
-		buffer.append("/**********************************************************************\n"); //$NON-NLS-1$
-		buffer.append(" * Copyright (c) 2005 IBM Corporation and others. All rights reserved.   This\n"); //$NON-NLS-1$
-		buffer.append(" * program and the accompanying materials are made available under the terms of\n"); //$NON-NLS-1$
-		buffer.append(" * the Eclipse Public License v1.0 which accompanies this distribution, and is\n"); //$NON-NLS-1$
-		buffer.append(" * available at http://www.eclipse.org/legal/epl-v10.html\n"); //$NON-NLS-1$
-		buffer.append(" * \n"); //$NON-NLS-1$
-		buffer.append(" * Contributors: \n"); //$NON-NLS-1$
-		buffer.append(" * IBM - Initial API and implementation\n"); //$NON-NLS-1$
-		buffer.append(" **********************************************************************/\n"); //$NON-NLS-1$
-		buffer.append("package "); //$NON-NLS-1$
-		buffer.append(pkgName);
-		buffer.append(";\n\n"); //$NON-NLS-1$
-
-		buffer.append("import org.eclipse.osgi.util.NLS;\n\n"); //$NON-NLS-1$
-		buffer.append("public class "); //$NON-NLS-1$
-		buffer.append(typeName);
-		buffer.append(" extends NLS {\n"); //$NON-NLS-1$
-		buffer.append("\tprivate static final String BUNDLE_NAME = \"" + pkgName + '.' + bundleName + "\";//$NON-NLS-1$\n"); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	/*
-	 * Remove the properties in the specified list from the file.
-	 */
-	public Change trim(IFile propertiesFile, List toDelete) throws IOException, CoreException {
-		if (toDelete == null || toDelete.isEmpty())
-			return null;
-		BufferedReader reader = new BufferedReader(new InputStreamReader(propertiesFile.getContents()));
-		StringBuffer bundle = new StringBuffer();
-
-		try {
-			String line;
-			boolean isContinued = false;
-			boolean wasDeleted = false;
-			while ((line = reader.readLine()) != null) {
-				line = line.trim();
-				// just add comments directly to the output
-				if (skipLine(line)) {
-					bundle.append(line);
-					bundle.append("\r\n"); //$NON-NLS-1$
-					continue;
-				}
-
-				boolean wasContinued = isContinued;
-				isContinued = isContinued(line);
-				// if we are continued from the previous line...
-				if (wasContinued) {
-					// if the previous line was deleted then...
-					if (wasDeleted) {
-						// skip this line
-					} else {
-						// otherwise write it out
-						bundle.append(line);
-						bundle.append("\r\n"); //$NON-NLS-1$
-					}
-				} else {
-					// we weren't continued from the previous line
-					String key = extractKey(line);
-					boolean shouldDelete = toDelete.contains(key);
-					// if the key was in our skip list then don't write it out
-					if (shouldDelete) {
-						wasDeleted = true;
-					} else {
-						wasDeleted = false;
-						bundle.append(line);
-						bundle.append("\r\n"); //$NON-NLS-1$
-					}
-				}
-
-			}
-		} finally {
-			if (reader != null)
-				reader.close();
-		}
-		NLSFileChange pChange = new NLSFileChange(propertiesFile);
-		pChange.setContents(bundle.toString());
-		return pChange;
-	}
-
-	/**
-	 * Reads an old properties file, and creates a new properties file and corresponding
-	 * Java messages file.
-	 */
-	public Change[] convertFile(IType accessorType, IFile propertiesFile) throws IOException, CoreException {
-		String pkgName = accessorType.getPackageFragment().getElementName();
-		IFile accessorFile = (IFile) accessorType.getCompilationUnit().getCorrespondingResource();
-		String typeName = accessorFile.getFullPath().removeFileExtension().lastSegment();
-		BufferedReader reader = new BufferedReader(new InputStreamReader(propertiesFile.getContents()));
-		String bundleName = propertiesFile.getName();
-		StringBuffer clazz = new StringBuffer();
-		// convert the bundle resource (messages.properties) to the simple name (messages)
-		String simpleBundleName = new Path(bundleName).removeFileExtension().toString();
-		appendPreText(clazz, pkgName, simpleBundleName, typeName);
-		StringBuffer bundle = new StringBuffer();
-		int savings = 0;
-		try {
-			String line;
-			boolean isContinued = false;
-			while ((line = reader.readLine()) != null) {
-				line = line.trim();
-				boolean wasContinued = isContinued;
-				isContinued = isContinued(line);
-				if (!wasContinued) {
-					if (skipLine(line)) {
-						clazz.append(convertToComment(line));
-					} else {
-						String key = extractKey(line);
-						savings += 88 + 4 * key.length();
-						String identifier = convertToJavaIdentifier(key);
-						clazz.append("\tpublic static String "); //$NON-NLS-1$
-						clazz.append(identifier);
-						clazz.append(";\n"); //$NON-NLS-1$
-						//convert the bundle file line to use the Java identifier
-						line = identifier + line.substring(key.length());
-					}
-				}
-				//write the line out to the new bundle file
-				bundle.append(line);
-				bundle.append("\r\n"); //$NON-NLS-1$
-			}
-		} finally {
-			if (reader != null)
-				reader.close();
-		}
-		System.out.println("Memory saved by converting to field-based keys: " + savings);
-		appendPostText(clazz, pkgName + '.' + bundleName, typeName);
-
-		NLSFileChange pChange = new NLSFileChange(propertiesFile);
-		pChange.setContents(bundle.toString());
-
-		NLSFileChange cChange = new NLSFileChange(accessorFile);
-		cChange.setContents(clazz.toString());
-
-		return new Change[] {pChange, cChange};
-	}
-
-	/**
-	 * Writes the given line as a comment int the provided class buffer.
-	 * Blank lines are preserved.
-	 */
-	private String convertToComment(String line) {
-		StringBuffer comment = new StringBuffer();
-		if (line.trim().length() > 0) {
-			comment.append("\t//"); //$NON-NLS-1$
-		}
-		int offset = 0;
-		//skip leading comment characters
-		while (offset < line.length()) {
-			char c = line.charAt(offset);
-			if (c != '!' && c != '#')
-				break;
-			offset++;
-		}
-		comment.append(line.substring(offset));
-		comment.append('\n');
-		return comment.toString();
-	}
-
-	/**
-	 * Converts an arbitrary string into a string that represents a valid
-	 * Java identifier.
-	 */
-	public static String convertToJavaIdentifier(String key) {
-		String string = key.trim();
-		int len = string.length();
-		if (len == 0)
-			return string;
-		StringBuffer result = new StringBuffer();
-		char c = string.charAt(0);
-		if (Character.isJavaIdentifierStart(c))
-			result.append(c);
-		else {
-			//if it's a valid part, just add an underscore first but keep the character
-			result.append('_');
-			if (Character.isJavaIdentifierPart(c))
-				result.append(c);
-		}
-		for (int i = 1; i < len; i++) {
-			c = string.charAt(i);
-			if (Character.isJavaIdentifierPart(c))
-				result.append(c);
-			else
-				result.append('_');
-		}
-		//preserve trailing space
-		if (key.endsWith(" ")) //$NON-NLS-1$
-			result.append(' ');
-		return makeUnique(result.toString());
-	}
-
-	/**
-	 * Given a key converted to a Java identifier, ensure it is unique.
-	 * @return A unique key
-	 */
-	private static String makeUnique(String originalKey) {
-		String attempt = originalKey;
-		int counter = 0;
-		while (keywords.contains(attempt))
-			attempt = originalKey + counter++;
-		return attempt;
-	}
-
-	/**
-	 * Extracts and returns the property key from the given property file line.
-	 * The provided line contains no leading or trailing whitespace.
-	 */
-	private String extractKey(String line) {
-		int len = line.length();
-		StringBuffer key = new StringBuffer();
-		for (int i = 0; i < len; i++) {
-			char c = line.charAt(i);
-			//whitespace, colon, or equals characters represent key separators
-			if (Character.isWhitespace(c) || c == ':' || c == '=')
-				break;
-			key.append(c);
-		}
-		return key.toString();
-	}
-
-	/**
-	 * Returns whether the property value on this line will be continued onto the next.
-	 */
-	private boolean isContinued(String line) {
-		//note that literal escaped slash characters at the end of a line are not
-		//treated as continuation markers.
-		boolean continuation = false;
-		for (int i = line.length() - 1; (i >= 0) && (line.charAt(i) == '\\'); i--)
-			continuation = !continuation;
-		return continuation;
-	}
-
-	/**
-	 * Returns whether the given line contains a key that needs to be converted.
-	 */
-	private boolean skipLine(String line) {
-		if (line.length() == 0)
-			return true;
-		char first = line.charAt(0);
-		return first == '#' || first == '!';
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/RemoveUnusedMessages.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/RemoveUnusedMessages.java
deleted file mode 100644
index ab3abe9..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/RemoveUnusedMessages.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.nls;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.core.filebuffers.*;
-import org.eclipse.core.filebuffers.ITextFileBuffer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.*;
-import org.eclipse.jdt.core.*;
-import org.eclipse.jdt.core.dom.*;
-import org.eclipse.jdt.core.dom.rewrite.ASTRewrite;
-import org.eclipse.jdt.core.search.IJavaSearchConstants;
-import org.eclipse.jdt.core.search.SearchPattern;
-import org.eclipse.jdt.internal.corext.refactoring.RefactoringScopeFactory;
-import org.eclipse.jdt.internal.corext.refactoring.RefactoringSearchEngine;
-import org.eclipse.jdt.internal.corext.refactoring.changes.CompilationUnitChange;
-import org.eclipse.jdt.internal.corext.refactoring.util.RefactoringASTParser;
-import org.eclipse.jdt.internal.corext.refactoring.util.RefactoringFileBuffers;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.ltk.core.refactoring.*;
-
-/*
- * Class that removes field declarations which aren't referenced.
- */
-public class RemoveUnusedMessages extends Refactoring {
-
-	IType accessorClass;
-	IFile propertiesFile;
-	CompositeChange change;
-
-	public RemoveUnusedMessages(IType accessorClass, IFile propertiesFile) {
-		super();
-		this.accessorClass = accessorClass;
-		this.propertiesFile = propertiesFile;
-	}
-
-	public String getName() {
-		return "Fix NLS References";
-	}
-
-	public RefactoringStatus checkInitialConditions(IProgressMonitor monitor) {
-		return new RefactoringStatus();
-	}
-
-	public RefactoringStatus checkFinalConditions(IProgressMonitor monitor) throws CoreException, OperationCanceledException {
-		if (monitor == null)
-			monitor = new NullProgressMonitor();
-		change = new CompositeChange("Accessor Class Changes");
-		RefactoringStatus result = new RefactoringStatus();
-		ICompilationUnit unit = JavaCore.createCompilationUnitFrom((IFile) accessorClass.getResource());
-		CompilationUnit root = new RefactoringASTParser(AST.JLS3).parse(unit, true, null);
-		ASTRewrite rewriter = ASTRewrite.create(root.getAST());
-
-		// Search for references
-		IField[] fields = accessorClass.getFields();
-		ArrayList toDelete = new ArrayList();
-		// 10 units of work for modifying the properties file and AST
-		monitor.beginTask("Searching for references.", fields.length + 10);
-		try {
-			for (int i = 0; i < fields.length; i++) {
-				if (monitor.isCanceled())
-					throw new OperationCanceledException();
-				IField field = fields[i];
-				String fieldName = field.getElementName();
-				monitor.subTask("Searching for references to: " + fieldName);
-				int flags = field.getFlags();
-				// only want to look at the public static String fields
-				if (!(Flags.isPublic(flags) && Flags.isStatic(flags)))
-					continue;
-				// search for references
-				ICompilationUnit[] affectedUnits = RefactoringSearchEngine.findAffectedCompilationUnits(SearchPattern.createPattern(field, IJavaSearchConstants.REFERENCES), RefactoringScopeFactory.create(accessorClass), new SubProgressMonitor(monitor, 1), result);
-				// there are references so go to the next field
-				if (affectedUnits.length > 0)
-					continue;
-				System.out.println("Found unused field: " + fieldName);
-				toDelete.add(fieldName);
-			}
-			System.out.println("Analysis of " + fields.length + " messages found " + toDelete.size() + " unused messages");
-
-			// any work to do?
-			if (toDelete.isEmpty())
-				return result;
-
-			if (monitor.isCanceled())
-				throw new OperationCanceledException();
-
-			// remove the field and its corresponding entry in the messages.properties file
-			processAST(root, rewriter, toDelete);
-			monitor.worked(5);
-			processPropertiesFile(toDelete);
-			monitor.worked(5);
-
-			CompilationUnitChange cuChange = new CompilationUnitChange(unit.getElementName(), unit);
-			try {
-				ITextFileBuffer buffer = RefactoringFileBuffers.acquire(unit);
-				IDocument document = buffer.getDocument();
-				cuChange.setEdit(rewriter.rewriteAST(document, null));
-			} finally {
-				RefactoringFileBuffers.release(unit);
-			}
-			change.add(cuChange);
-
-		} finally {
-			monitor.done();
-		}
-
-		// return the result
-		return result;
-	}
-
-	private void processAST(final CompilationUnit root, final ASTRewrite rewriter, final List toDelete) {
-		ASTVisitor visitor = new ASTVisitor() {
-			public boolean visit(VariableDeclarationFragment node) {
-				// check to see if its in our list of fields to delete
-				if (!toDelete.contains(node.getName().toString()))
-					return true;
-				rewriter.remove(node.getParent(), null);
-				return true;
-			}
-		};
-		root.accept(visitor);
-	}
-
-	private void processPropertiesFile(List list) throws CoreException {
-		try {
-			ITextFileBufferManager manager = FileBuffers.getTextFileBufferManager();
-			try {
-				manager.connect(propertiesFile.getFullPath(), null);
-				manager.connect(accessorClass.getCompilationUnit().getCorrespondingResource().getFullPath(), null);
-				change.add(new PropertyFileConverter().trim(propertiesFile, list));
-			} finally {
-				manager.disconnect(propertiesFile.getFullPath(), null);
-				manager.disconnect(accessorClass.getCompilationUnit().getCorrespondingResource().getFullPath(), null);
-			}
-		} catch (IOException e) {
-			throw new CoreException(new Status(IStatus.ERROR, NLSPlugin.PI_NLS, IStatus.ERROR, e.getMessage(), e));
-		}
-	}
-
-	public Change createChange(IProgressMonitor monitor) {
-		return change;
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/RemoveUnusedMessagesAction.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/RemoveUnusedMessagesAction.java
deleted file mode 100644
index 700577a..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/nls/RemoveUnusedMessagesAction.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.nls;
-
-import java.lang.reflect.InvocationTargetException;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jdt.core.ICompilationUnit;
-import org.eclipse.jdt.internal.ui.actions.WorkbenchRunnableAdapter;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ltk.core.refactoring.CheckConditionsOperation;
-import org.eclipse.ltk.core.refactoring.PerformRefactoringOperation;
-import org.eclipse.ui.*;
-
-public class RemoveUnusedMessagesAction implements IObjectActionDelegate {
-
-	private ICompilationUnit fAccessorUnit;
-	private IWorkbenchPart fPart;
-
-	public void setActivePart(IAction action, IWorkbenchPart part) {
-		fPart = part;
-	}
-
-	public void run(IAction action) {
-		if (fAccessorUnit == null)
-			return;
-		try {
-			final GotoResourceAction pAction = new GotoResourceAction(fPart);
-			IRunnableWithProgress runnable = new IRunnableWithProgress() {
-				public void run(IProgressMonitor monitor) {
-					pAction.run();
-				}
-			};
-			PlatformUI.getWorkbench().getProgressService().run(false, false, runnable);
-			IFile propertiesFile = (IFile) pAction.getResource();
-			if (propertiesFile == null)
-				return;
-			RemoveUnusedMessages refactoring = new RemoveUnusedMessages(fAccessorUnit.getTypes()[0], propertiesFile);
-			PerformRefactoringOperation op = new PerformRefactoringOperation(refactoring, CheckConditionsOperation.ALL_CONDITIONS);
-			PlatformUI.getWorkbench().getProgressService().run(false, true, new WorkbenchRunnableAdapter(op));
-		} catch (CoreException e) {
-			throw new RuntimeException(e);
-		} catch (InterruptedException e) {
-			throw new RuntimeException(e);
-		} catch (InvocationTargetException e) {
-			throw new RuntimeException(e);
-		}
-
-	}
-
-	public void selectionChanged(IAction action, ISelection selection) {
-		Object element = ((IStructuredSelection) selection).getFirstElement();
-		if (element instanceof ICompilationUnit) {
-			fAccessorUnit = (ICompilationUnit) element;
-		}
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/ActivePluginsView.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/ActivePluginsView.java
deleted file mode 100644
index 0cae472..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/ActivePluginsView.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.runtime;
-
-import java.util.Arrays;
-import java.util.Iterator;
-import org.eclipse.core.runtime.internal.stats.BundleStats;
-import org.eclipse.core.runtime.internal.stats.StatsManager;
-import org.eclipse.core.tools.CoreToolsPlugin;
-import org.eclipse.core.tools.TableWithTotalView;
-import org.eclipse.jface.action.*;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.*;
-import org.eclipse.ui.actions.ActionFactory;
-
-/**
- * View used to display the activated plugins 
- */
-public class ActivePluginsView extends TableWithTotalView {
-	private Action refreshAction;
-	private Action displayClassesInfoAction;
-	private Action displayStackAction;
-
-	public static String VIEW_ID = ActivePluginsView.class.getName();
-	private static String columnHeaders[] = {"Plug-in", "Classes", "Alloc", "Used", "Startup time", "Order", "Timestamp", "Class load time", "Startup method time", "RAM Alloc", "RAM Used", "ROM Alloc", "ROM Used"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ //$NON-NLS-11$ //$NON-NLS-12$ //$NON-NLS-13$
-	private static int columnWidths[] = {500, 150, 200, 200, 150, 100, 0, 0, 0, 0, 0, 0, 0};
-
-	protected String[] getColumnHeaders() {
-		return columnHeaders;
-	}
-
-	protected ColumnLayoutData[] getColumnLayout() {
-		ColumnLayoutData[] result = new ColumnLayoutData[columnWidths.length];
-		for (int i = 0; i < columnWidths.length; i++) {
-			int width = columnWidths[i];
-			result[i] = width == 0 ? (ColumnLayoutData) new ColumnPixelData(width) : (ColumnLayoutData) new ColumnWeightData(width);
-		}
-		return result;
-	}
-
-	protected void createToolbar() {
-		IActionBars actionBars = getViewSite().getActionBars();
-		IToolBarManager manager = actionBars.getToolBarManager();
-		manager.add(refreshAction);
-		manager.add(displayClassesInfoAction);
-		manager.add(displayStackAction);
-	}
-
-	protected void createContextMenu() {
-		// Create menu manager.
-		MenuManager manager = new MenuManager();
-		manager.setRemoveAllWhenShown(true);
-		manager.addMenuListener(new IMenuListener() {
-			public void menuAboutToShow(IMenuManager mgr) {
-				fillContextMenu(mgr);
-			}
-		});
-
-		// Create menu.
-		Menu menu = manager.createContextMenu(viewer.getControl());
-		viewer.getControl().setMenu(menu);
-
-		// Register menu for extension.
-		getSite().registerContextMenu(manager, viewer);
-	}
-
-	protected void fillContextMenu(IMenuManager manager) {
-		manager.add(refreshAction);
-		manager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
-		manager.add(new Separator());
-		manager.add(displayClassesInfoAction);
-		manager.add(displayStackAction);
-	}
-
-	protected String[] computeTotalLine(Iterator iterator) {
-		int sumOfClasses = 0;
-		int sumOfMemoryUsed = 0;
-		int sumOfMemoryAlloc = 0;
-		long sumOfStartupTime = 0;
-		long sumOfClassloadtime = 0;
-		int sumOfRAMAlloc = 0;
-		int sumOfRAMUsed = 0;
-		long sumOfStartupMethodTime = 0;
-		int sumOfROMAlloc = 0;
-		int sumOfROMUsed = 0;
-		int count = 0;
-		if (!iterator.hasNext()) {
-			Object[] elements = ((ITreeContentProvider) viewer.getContentProvider()).getElements(viewer.getInput());
-			iterator = Arrays.asList(elements).iterator();
-		}
-		for (; iterator.hasNext();) {
-			BundleStats element = (BundleStats) iterator.next();
-			if (element != null) {
-				VMClassloaderInfo vmInfo = VMClassloaderInfo.getClassloader(element.getSymbolicName());
-				sumOfClasses += element.getClassLoadCount();
-				sumOfMemoryUsed += (vmInfo.getUsedRAM() + vmInfo.getUsedROM());
-				sumOfMemoryAlloc += (vmInfo.getAllocRAM() + vmInfo.getAllocROM());
-				sumOfStartupTime = sumOfStartupTime + element.getStartupTime();
-				sumOfClassloadtime = sumOfClassloadtime + element.getClassLoadTime();
-				sumOfStartupMethodTime = sumOfStartupMethodTime + element.getStartupMethodTime();
-				sumOfRAMAlloc += vmInfo.getAllocRAM();
-				sumOfRAMUsed += vmInfo.getUsedRAM();
-				sumOfROMAlloc += vmInfo.getAllocROM();
-				sumOfROMUsed += vmInfo.getUsedROM();
-				count++;
-			}
-		}
-		String[] totalLine = new String[getColumnHeaders().length];
-		totalLine[0] = "Total: " + count; //$NON-NLS-1$
-		totalLine[1] = "" + sumOfClasses; //$NON-NLS-1$
-		totalLine[2] = "" + sumOfMemoryAlloc; //$NON-NLS-1$
-		totalLine[3] = "" + sumOfMemoryUsed; //$NON-NLS-1$
-		totalLine[4] = "" + sumOfStartupTime; //$NON-NLS-1$
-		totalLine[8] = "" + sumOfStartupMethodTime; //$NON-NLS-1$
-		totalLine[9] = "" + sumOfRAMAlloc; //$NON-NLS-1$
-		totalLine[10] = "" + sumOfRAMUsed; //$NON-NLS-1$
-		totalLine[11] = "" + sumOfROMAlloc; //$NON-NLS-1$
-		totalLine[12] = "" + sumOfROMUsed; //$NON-NLS-1$
-		return totalLine;
-	}
-
-	public void createPartControl(Composite parent) {
-		if (!StatsManager.MONITOR_ACTIVATION) {
-			Text text = new Text(parent, 0);
-			text.setText("Plug-in monitoring is not enabled"); //$NON-NLS-1$
-			return;
-		}
-		super.createPartControl(parent);
-		viewer.setInput(BundleStats.class);
-		getSite().setSelectionProvider(viewer);
-		viewer.setSelection(StructuredSelection.EMPTY);
-	}
-
-	protected void createActions() {
-		refreshAction = new Action("Refresh") { //$NON-NLS-1$
-			public void run() {
-				VMClassloaderInfo.refreshInfos();
-				getViewer().refresh();
-			}
-		};
-		refreshAction.setImageDescriptor(CoreToolsPlugin.createImageDescriptor("refresh.gif")); //$NON-NLS-1$
-		refreshAction.setToolTipText("Refresh the data"); //$NON-NLS-1$
-		IActionBars actionBars = getViewSite().getActionBars();
-		actionBars.setGlobalActionHandler(ActionFactory.REFRESH.getId(), refreshAction);
-
-		displayClassesInfoAction = new Action("Classes") { //$NON-NLS-1$
-			public void run() {
-				try {
-					LoadedClassesView view = (LoadedClassesView) getSite().getPage().showView(LoadedClassesView.VIEW_ID);
-					IStructuredSelection selection = ((IStructuredSelection) getViewer().getSelection());
-					if (selection == null)
-						return;
-
-					view.setInput(selection.toArray());
-
-				} catch (PartInitException e) {
-					e.printStackTrace();
-				}
-			}
-		};
-		displayClassesInfoAction.setToolTipText("Display classes loaded by the selected plug-in"); //$NON-NLS-1$
-		displayClassesInfoAction.setImageDescriptor(CoreToolsPlugin.createImageDescriptor("classes.gif")); //$NON-NLS-1$
-
-		displayStackAction = new Action("Stack &Trace") { //$NON-NLS-1$
-			public void run() {
-				try {
-					StackTraceView view = (StackTraceView) getSite().getPage().showView(StackTraceView.VIEW_ID);
-					BundleStats info = (BundleStats) ((IStructuredSelection) getViewer().getSelection()).getFirstElement();
-					if (info == null)
-						return;
-					view.setInput(StatsManager.TRACE_FILENAME, info.getTraceStart(), info.getTraceEnd());
-				} catch (PartInitException e) {
-					e.printStackTrace();
-				}
-			}
-		};
-		displayStackAction.setToolTipText("Display the plug-in activation stack trace"); //$NON-NLS-1$
-		displayStackAction.setImageDescriptor(CoreToolsPlugin.createImageDescriptor("trace.gif")); //$NON-NLS-1$
-	}
-
-	protected ITreeContentProvider getContentProvider() {
-		return new ActivePluginsViewContentProvider();
-	}
-
-	protected ITableLabelProvider getLabelProvider() {
-		return new ActivePluginsViewLabelProvider();
-	}
-
-	protected ViewerSorter getSorter(int column) {
-		return new ActivePluginsViewSorter(column);
-	}
-
-	/**
-	 * @see org.eclipse.core.tools.TableWithTotalView#getStatusLineMessage(Object)
-	 */
-	protected String getStatusLineMessage(Object element) {
-		return ""; //$NON-NLS-1$
-	}
-
-	protected TableTreeViewer getViewer() {
-		return viewer;
-	}
-
-	public void dispose() {
-		// if there is no viewer then we were not monitoring so there
-		// is nothing to dispose.
-		if (viewer == null)
-			return;
-		refreshAction.setImageDescriptor(null);
-		displayClassesInfoAction.setImageDescriptor(null);
-		displayStackAction.setImageDescriptor(null);
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/ActivePluginsViewContentProvider.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/ActivePluginsViewContentProvider.java
deleted file mode 100644
index 76512c6..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/ActivePluginsViewContentProvider.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.runtime;
-
-import java.util.ArrayList;
-import org.eclipse.core.runtime.internal.stats.BundleStats;
-import org.eclipse.core.runtime.internal.stats.StatsManager;
-import org.eclipse.core.tools.IFlattable;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-
-/**
- * Content provider for the ActivePluginsView
- */
-public class ActivePluginsViewContentProvider implements ITreeContentProvider, IFlattable {
-	private boolean flat;
-
-	public void setFlat(boolean mode) {
-		flat = mode;
-	}
-
-	public void dispose() {
-		// do nothing
-	}
-
-	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-		// do nothing
-	}
-
-	public Object[] getChildren(Object element) {
-		if (flat || !(element instanceof BundleStats))
-			return new Object[0];
-		if (element == null)
-			return null;
-		ArrayList stats = ((BundleStats) element).getBundlesActivated();
-		return stats.toArray(new Object[stats.size()]);
-	}
-
-	public Object getParent(Object element) {
-		if (flat || !(element instanceof BundleStats))
-			return null;
-		if (element == null)
-			return null;
-		return ((BundleStats) element).getActivatedBy().getSymbolicName();
-	}
-
-	public boolean hasChildren(Object element) {
-		if (flat || !(element instanceof BundleStats))
-			return false;
-		return element == null ? false : ((BundleStats) element).getBundlesActivated().size() > 0;
-	}
-
-	public Object[] getElements(Object inputElement) {
-		if (!StatsManager.MONITOR_ACTIVATION || inputElement != BundleStats.class)
-			return null;
-
-		BundleStats[] active = StatsManager.getDefault().getBundles();
-		ArrayList result = new ArrayList(active.length);
-		for (int i = 0; i < active.length; i++) {
-			if (flat || active[i].getActivatedBy() == null)
-				result.add(active[i]);
-		}
-		return result.toArray(new BundleStats[result.size()]);
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/ActivePluginsViewLabelProvider.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/ActivePluginsViewLabelProvider.java
deleted file mode 100644
index 1e0fc38..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/ActivePluginsViewLabelProvider.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.runtime;
-
-import org.eclipse.core.runtime.internal.stats.BundleStats;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * Label provider for the ActivePluginsView
- *
- */
-public class ActivePluginsViewLabelProvider extends LabelProvider implements ITableLabelProvider {
-
-	public void addListener(ILabelProviderListener listener) {
-		// do nothing
-	}
-
-	public void dispose() {
-		// do nothing
-	}
-
-	public boolean isLabelProperty(Object element, String property) {
-		return false;
-	}
-
-	public void removeListener(ILabelProviderListener listener) {
-		// do nothing
-	}
-
-	public Image getColumnImage(Object element, int columnIndex) {
-		return null;
-	}
-
-	public String getColumnText(Object element, int columnIndex) {
-		if (!(element instanceof BundleStats))
-			return "not a plug-in"; //$NON-NLS-1$
-		BundleStats info = (BundleStats) element;
-		if (info == null)
-			return "no info for plug-in"; //$NON-NLS-1$
-		VMClassloaderInfo loaderInfo = VMClassloaderInfo.getClassloader(info.getSymbolicName());
-		switch (columnIndex) {
-			case 0 : /* id */
-				return info.getSymbolicName() + (info.isStartupBundle() ? "*" : ""); //$NON-NLS-1$ //$NON-NLS-2$
-			case 1 : /* class load count */
-				return "" + info.getClassLoadCount(); //$NON-NLS-1$
-			case 2 : /* Total Mem Alloc */
-				return "" + (loaderInfo.getAllocRAM() + loaderInfo.getAllocROM()); //$NON-NLS-1$
-			case 3 : /* Total Mem Used */
-				return "" + (loaderInfo.getUsedRAM() + loaderInfo.getUsedROM()); //$NON-NLS-1$
-			case 4 : /* startup time */
-				return "" + (info.getStartupTime()); //$NON-NLS-1$
-			case 5 : /* activation order */
-				return "" + info.getActivationOrder(); //$NON-NLS-1$
-			case 6 : /* activation time */
-				return "" + (int) (info.getTimestamp()); //$NON-NLS-1$
-			case 7 : /* class load time*/
-				return "" + (int) (info.getClassLoadTime()); //$NON-NLS-1$
-			case 8 : /* startup method time */
-				return "" + (int) (info.getStartupMethodTime()); //$NON-NLS-1$
-			case 9 : /* RAM alloc */
-				return "" + loaderInfo.getAllocRAM(); //$NON-NLS-1$
-			case 10 : /* RAM used */
-				return "" + loaderInfo.getUsedRAM(); //$NON-NLS-1$
-			case 11 : /* ROM alloc */
-				return "" + loaderInfo.getAllocROM(); //$NON-NLS-1$
-			case 12 : /* ROM used */
-				return "" + loaderInfo.getUsedROM(); //$NON-NLS-1$
-		}
-		return null;
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/ActivePluginsViewSorter.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/ActivePluginsViewSorter.java
deleted file mode 100644
index 0b1f48c..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/ActivePluginsViewSorter.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.runtime;
-
-import java.text.Collator;
-import org.eclipse.core.runtime.internal.stats.BundleStats;
-import org.eclipse.core.tools.ISorter;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-
-/**
- * Sorter used in the ActivePluginsView
- */
-public class ActivePluginsViewSorter extends ViewerSorter implements ISorter {
-	private boolean reversed = true;
-	private int columnNumber;
-	private Collator collator = Collator.getInstance();
-
-	// column headings: "Plug-in", "Classes", "Alloc", "Used", "Startup time", "Order", "Timestamp", "Class load time", "Startup method time", "RAM Alloc", "RAM Used", "ROM Alloc", "ROM Used" };
-	private int[][] SORT_ORDERS_BY_COLUMN = { //
-	{0}, /* Plugin */{1, 0}, /* Count */{2, 0}, /* Alloc */{3, 0}, /* Used */{4, 0}, /* Startup time */{5, 0}, /* Order */{6, 0}, /* timestamp */{7, 0}, /* Class load time */{8, 0}, /* Startup method time */{9, 0}, /* RAM Alloc */{10, 0}, /* RAM Used */{11, 0}, /*	ROM Alloc */{12, 0} /* ROM Used */
-	};
-
-	public ActivePluginsViewSorter(int columnNumber) {
-		this.columnNumber = columnNumber;
-		if (columnNumber == 0)
-			reversed = false;
-	}
-
-	/**
-	 * Compares two stats objects, sorting first by the main column of this sorter,
-	 * then by subsequent columns, depending on the column sort order.
-	 */
-	public int compare(Viewer viewer, Object o1, Object o2) {
-		BundleStats info1 = (BundleStats) o1;
-		BundleStats info2 = (BundleStats) o2;
-		int[] columnSortOrder = SORT_ORDERS_BY_COLUMN[columnNumber];
-		int result = 0;
-		for (int i = 0; i < columnSortOrder.length; ++i) {
-			result = compareColumnValue(columnSortOrder[i], info1, info2);
-			if (result != 0)
-				break;
-		}
-		return reversed ? -result : result;
-	}
-
-	/**
-	 * Compares two markers, based only on the value of the specified column.
-	 */
-	int compareColumnValue(int column, BundleStats info1, BundleStats info2) {
-		VMClassloaderInfo loaderInfo1 = VMClassloaderInfo.getClassloader(info1.getSymbolicName());
-		VMClassloaderInfo loaderInfo2 = VMClassloaderInfo.getClassloader(info2.getSymbolicName());
-		switch (column) {
-			case 0 : /* id */
-				return collator.compare(info1.getSymbolicName(), info2.getSymbolicName());
-			case 1 : /* Number Of classes loaded */
-				return info1.getClassLoadCount() - info2.getClassLoadCount();
-			case 2 : /* Total Mem Alloc */
-				return (loaderInfo1.getAllocRAM() + loaderInfo1.getAllocROM()) - (loaderInfo2.getAllocRAM() + loaderInfo2.getAllocROM());
-			case 3 : /* Total Mem Used */
-				return (loaderInfo1.getUsedRAM() + loaderInfo1.getUsedROM()) - (loaderInfo2.getUsedRAM() + loaderInfo2.getUsedROM());
-			case 4 : /* startup time */
-				return (int) (info1.getStartupTime() - info2.getStartupTime());
-			case 5 : /* actionvation order */
-				return info1.getActivationOrder() - info2.getActivationOrder();
-			case 6 : /* Activation time */
-				return (int) (info1.getTimestamp() - info2.getTimestamp());
-			case 7 : /* Class load time */
-				return (int) (info1.getClassLoadTime() - info2.getClassLoadTime());
-			case 8 : /* Startup method time */
-				return (int) (info1.getStartupMethodTime() - info2.getStartupMethodTime());
-			case 9 : /* RAM Alloc */
-				return loaderInfo1.getAllocRAM() - loaderInfo2.getAllocRAM();
-			case 10 : /* RAM Alloc */
-				return loaderInfo1.getUsedRAM() - loaderInfo2.getUsedRAM();
-			case 11 :
-				return loaderInfo1.getAllocROM() - loaderInfo2.getAllocROM();
-			case 12 :
-				return loaderInfo1.getUsedROM() - loaderInfo2.getUsedROM();
-		}
-		return 0;
-	}
-
-	public int getColumnNumber() {
-		return columnNumber;
-	}
-
-	public boolean isReversed() {
-		return reversed;
-	}
-
-	public void setReversed(boolean value) {
-		reversed = value;
-	}
-
-	/**
-	 * @see org.eclipse.core.tools.ISorter#states()
-	 */
-	public int states() {
-		return 3;
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/ContentTypePropertySource.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/ContentTypePropertySource.java
deleted file mode 100644
index 44b7380..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/ContentTypePropertySource.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2003, 2004 Geoff Longman and others.
- * All rights reserved.   This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: 
- * Geoff Longman - Initial API and implementation
- * IBM - Tightening integration with existing Platform
- **********************************************************************/
-package org.eclipse.core.tools.runtime;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.ui.views.properties.*;
-
-/**
- * A read-only IPropertySource for Marker attributes.
- */
-public class ContentTypePropertySource implements IPropertySource, IAdaptable {
-	final static IPropertyDescriptor UNIQUE_ID = new TextPropertyDescriptor("id", "Unique ID");
-	final static IPropertyDescriptor NAME = new TextPropertyDescriptor("name", "Name");
-	final static IPropertyDescriptor PARENT_ID = new TextPropertyDescriptor("parent", "Parent ID");
-	final static IPropertyDescriptor FILE_NAMES = new TextPropertyDescriptor("file-names", "Associated file names");
-	final static IPropertyDescriptor FILE_EXTENSIONS = new TextPropertyDescriptor("file-extensions", "Associated file extensions");
-	final static IPropertyDescriptor DEFAULT_CHARSET = new TextPropertyDescriptor("charset", "Default charset");
-
-	final static IPropertyDescriptor[] PROPERTY_DESCRIPTORS = {UNIQUE_ID, NAME, PARENT_ID, FILE_NAMES, FILE_EXTENSIONS, DEFAULT_CHARSET};
-
-	protected IContentType type;
-
-	public ContentTypePropertySource(IContentType type) {
-		this.type = type;
-	}
-
-	/**
-	 * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-	 */
-	public Object getEditableValue() {
-		return null;
-	}
-
-	/**
-	 * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-	 */
-	public IPropertyDescriptor[] getPropertyDescriptors() {
-		return PROPERTY_DESCRIPTORS;
-	}
-
-	/**
-	 * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(Object)
-	 */
-	public Object getPropertyValue(Object id) {
-		if (id.equals(UNIQUE_ID.getId()))
-			return type.getId();
-		if (id.equals(NAME.getId()))
-			return type.getName();
-		if (id.equals(PARENT_ID.getId())) {
-			IContentType baseType = type.getBaseType();
-			return baseType == null ? null : baseType.getId();
-		}
-		if (id.equals(FILE_NAMES.getId()))
-			return toString(type.getFileSpecs(IContentType.FILE_NAME_SPEC));
-		if (id.equals(FILE_EXTENSIONS.getId()))
-			return toString(type.getFileSpecs(IContentType.FILE_EXTENSION_SPEC));
-		if (id.equals(DEFAULT_CHARSET.getId()))
-			return type.getDefaultCharset();
-		return null;
-	}
-
-	private Object toString(String[] fileNames) {
-		if (fileNames.length == 0)
-			return ""; //$NON-NLS-1$
-		StringBuffer result = new StringBuffer();
-		for (int i = 0; i < fileNames.length; i++) {
-			result.append(fileNames[i]);
-			result.append(',');
-		}
-		result.deleteCharAt(result.length() - 1);
-		return result.toString();
-	}
-
-	/**
-	 * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(Object)
-	 */
-	public boolean isPropertySet(Object id) {
-		return true;
-	}
-
-	/**
-	 * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(Object)
-	 */
-	public void resetPropertyValue(Object id) {
-		// do nothing
-	}
-
-	/**
-	 * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(Object, Object)
-	 */
-	public void setPropertyValue(Object id, Object value) {
-		// do nothing
-	}
-
-	public boolean equals(Object obj) {
-		if (!(obj instanceof ContentTypePropertySource))
-			return false;
-		return type.getId().equals(((ContentTypePropertySource) obj).type.getId());
-	}
-
-	public int hashCode() {
-		return type.getId().hashCode();
-	}
-
-	public String toString() {
-		return type.getId();
-	}
-
-	public Object getAdapter(Class adapter) {
-		if (adapter == IPropertySource.class)
-			return this;
-		return null;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/ContentTypeView.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/ContentTypeView.java
deleted file mode 100644
index 5e75988..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/ContentTypeView.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.core.tools.runtime;
-
-import java.util.HashSet;
-import java.util.Set;
-import org.eclipse.core.internal.content.ContentTypeManager;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.core.tools.*;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * Content type Spy view. This view shows detailed information about the currently 
- * the content type registry . 
- * 
- */
-public class ContentTypeView extends SpyView implements IAdaptable {
-
-	private static class ContentTypeContentProvider extends AbstractTreeContentProvider {
-
-		public ContentTypeContentProvider() {
-			super(true);
-		}
-
-		protected boolean acceptInput(Object input) {
-			return true;
-		}
-
-		private TreeContentProviderNode addContentType(IContentType type, Set visited) {
-			ContentTypePropertySource wrapped = new ContentTypePropertySource(type);
-			if (!visited.add(wrapped))
-				return getNodeFor(wrapped);
-			IContentType base = type.getBaseType();
-			TreeContentProviderNode newNode = createNode(null, wrapped);
-			if (base == null) {
-				getRootNode().addChild(newNode);
-				return newNode;
-			}
-			TreeContentProviderNode baseTypeNode = addContentType(base, visited);
-			baseTypeNode.addChild(newNode);
-			return newNode;
-		}
-
-		private TreeContentProviderNode getNodeFor(Object type) {
-			return getRootNode().findNode(type);
-		}
-
-		protected void rebuild(Viewer viewer, Object input) {
-			IContentType[] allTypes = ContentTypeManager.getInstance().getAllContentTypes();
-			Set visited = new HashSet(allTypes.length);
-			for (int i = 0; i < allTypes.length; i++)
-				addContentType(allTypes[i], visited);
-		}
-	}
-
-	/** JFace's tree component used to present resource details. */
-	private AbstractTreeViewer viewer;
-
-	public void createPartControl(Composite parent) {
-		viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
-		viewer.setContentProvider(new ContentTypeContentProvider());
-		viewer.setInput(""); //$NON-NLS-1$
-		getSite().setSelectionProvider(viewer);
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/EclipsePreferencesView.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/EclipsePreferencesView.java
deleted file mode 100644
index ce178e7..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/EclipsePreferencesView.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.runtime;
-
-import java.util.ArrayList;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.core.tools.CollapseAllAction;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.*;
-import org.eclipse.ui.part.ViewPart;
-import org.osgi.service.prefs.BackingStoreException;
-
-public class EclipsePreferencesView extends ViewPart {
-
-	private TreeViewer viewer;
-	private IAction collapseAllAction;
-
-	class ViewContentProvider implements IStructuredContentProvider, ITreeContentProvider {
-
-		private IEclipsePreferences invisibleRoot;
-
-		public void inputChanged(Viewer v, Object oldInput, Object newInput) {
-			// do nothing
-		}
-
-		public Object[] getElements(Object parent) {
-			if (parent.equals(getViewSite())) {
-				if (invisibleRoot == null)
-					invisibleRoot = Platform.getPreferencesService().getRootNode();
-				return new Object[] {invisibleRoot};
-			}
-			return getChildren(parent);
-		}
-
-		public void dispose() {
-			// do nothing
-		}
-
-		public Object getParent(Object child) {
-			if (child instanceof IEclipsePreferences)
-				return ((IEclipsePreferences) child).parent();
-			return null;
-		}
-
-		public Object[] getChildren(Object parent) {
-			ArrayList result = new ArrayList();
-			if (parent instanceof IEclipsePreferences) {
-				IEclipsePreferences node = (IEclipsePreferences) parent;
-				try {
-					String[] childrenNames = node.childrenNames();
-					for (int i = 0; childrenNames != null && i < childrenNames.length; i++)
-						result.add(node.node(childrenNames[i]));
-					String[] keys = node.keys();
-					for (int i = 0; i < keys.length; i++)
-						result.add(keys[i] + '=' + node.get(keys[i], "")); //$NON-NLS-1$
-				} catch (BackingStoreException e) {
-					e.printStackTrace();
-				}
-			}
-			return result.toArray(new Object[result.size()]);
-		}
-
-		public boolean hasChildren(Object parent) {
-			if (parent instanceof IEclipsePreferences)
-				try {
-					IEclipsePreferences node = (IEclipsePreferences) parent;
-					return node.childrenNames().length != 0 || node.keys().length != 0;
-				} catch (BackingStoreException e) {
-					e.printStackTrace();
-				}
-			return false;
-		}
-	}
-
-	class ViewLabelProvider extends LabelProvider {
-
-		public String getText(Object obj) {
-			String result = obj.toString();
-			if (obj instanceof IEclipsePreferences) {
-				IEclipsePreferences node = (IEclipsePreferences) obj;
-				result = node.name();
-				if (result.length() == 0)
-					result = "<root>"; //$NON-NLS-1$
-			}
-			return result;
-		}
-
-		public Image getImage(Object obj) {
-			String imageKey = ISharedImages.IMG_OBJ_ELEMENT;
-			if (obj instanceof IEclipsePreferences)
-				imageKey = ISharedImages.IMG_OBJ_FOLDER;
-			return PlatformUI.getWorkbench().getSharedImages().getImage(imageKey);
-		}
-	}
-
-	public EclipsePreferencesView() {
-		super();
-	}
-
-	public void createPartControl(Composite parent) {
-		viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
-		viewer.setContentProvider(new ViewContentProvider());
-		viewer.setLabelProvider(new ViewLabelProvider());
-		viewer.setSorter(new ViewerSorter());
-		viewer.setInput(getViewSite());
-		getViewSite().setSelectionProvider(viewer);
-		IActionBars bars = getViewSite().getActionBars();
-		collapseAllAction = new CollapseAllAction(viewer);
-		bars.getToolBarManager().add(collapseAllAction);
-		bars.updateActionBars();
-	}
-
-	public void dispose() {
-		super.dispose();
-		collapseAllAction = null;
-	}
-
-	public void setFocus() {
-		viewer.getControl().setFocus();
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/EventsSorter.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/EventsSorter.java
deleted file mode 100644
index 510129d..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/EventsSorter.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.runtime;
-
-import java.text.Collator;
-import java.util.Arrays;
-import java.util.Comparator;
-import org.eclipse.core.runtime.PerformanceStats;
-import org.eclipse.core.tools.ISorter;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-
-public class EventsSorter extends ViewerSorter implements ISorter {
-	protected boolean reversed = false;
-	protected int columnNumber;
-
-	protected int[][] SORT_ORDERS_BY_COLUMN = {
-			// Event
-			{EventsView.COLUMN_EVENT, EventsView.COLUMN_BLAME, EventsView.COLUMN_CONTEXT},
-			// Blame
-			{EventsView.COLUMN_BLAME, EventsView.COLUMN_EVENT, EventsView.COLUMN_CONTEXT},
-			// Context
-			{EventsView.COLUMN_CONTEXT, EventsView.COLUMN_EVENT, EventsView.COLUMN_BLAME},
-			// Count
-			{EventsView.COLUMN_COUNT, EventsView.COLUMN_EVENT, EventsView.COLUMN_BLAME, EventsView.COLUMN_CONTEXT},
-			// Time
-			{EventsView.COLUMN_TIME, EventsView.COLUMN_EVENT, EventsView.COLUMN_BLAME, EventsView.COLUMN_CONTEXT}};
-
-	public EventsSorter(int columnNumber) {
-		this.columnNumber = columnNumber;
-	}
-
-	/**
-	 * Returns the number of the column by which this is sorting.
-	 */
-	public int getColumnNumber() {
-		return columnNumber;
-	}
-
-	/**
-	 * Returns true for descending, or false for ascending sorting order.
-	 */
-	public boolean isReversed() {
-		return reversed;
-	}
-
-	/**
-	 * Sets the sorting order.
-	 */
-	public void setReversed(boolean newReversed) {
-		reversed = newReversed;
-	}
-
-	/*
-	 * Overrides method from ViewerSorter
-	 */
-	public void sort(final Viewer viewer, Object[] elements) {
-		Comparator comparator = new Comparator() {
-			Collator c = Collator.getInstance();
-
-			/**
-			 * Compares two stats objects, sorting first by the main column of this sorter,
-			 * then by subsequent columns, depending on the column sort order.
-			 */
-			public int compare(Object o1, Object o2) {
-				PerformanceStats s1 = (PerformanceStats) o1;
-				PerformanceStats s2 = (PerformanceStats) o2;
-				//always sort failures above non-failures
-				if (s1.isFailure() && !s2.isFailure())
-					return -1;
-				if (s2.isFailure() && !s1.isFailure())
-					return 1;
-				int[] columnSortOrder = SORT_ORDERS_BY_COLUMN[columnNumber];
-				int result = 0;
-				for (int i = 0; i < columnSortOrder.length; ++i) {
-					result = compareColumnValue(columnSortOrder[i], s1, s2);
-					if (result != 0)
-						break;
-				}
-				if (reversed)
-					result = -result;
-				return result;
-			}
-
-			/**
-			 * Compares two markers, based only on the value of the specified column.
-			 */
-			int compareColumnValue(int column, PerformanceStats s1, PerformanceStats s2) {
-				switch (column) {
-					case EventsView.COLUMN_EVENT:
-						return c.compare(s1.getEvent(), s2.getEvent());
-					case EventsView.COLUMN_BLAME:
-						return c.compare(s1.getBlameString(), s2.getBlameString());
-					case EventsView.COLUMN_CONTEXT:
-						String name1 = s1.getContext() == null ? "" : s1.getContext(); //$NON-NLS-1$
-						String name2 = s2.getContext() == null ? "" : s2.getContext(); //$NON-NLS-1$
-						return c.compare(name1, name2);
-					case EventsView.COLUMN_COUNT:
-						return s2.getRunCount() - s1.getRunCount();
-					case EventsView.COLUMN_TIME:
-						return (int)(s2.getRunningTime() - s1.getRunningTime());
-				}
-				return 0;
-			}
-		};
-		Arrays.sort(elements, comparator);
-	}
-
-	public int states() {
-		return 2;
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/EventsView.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/EventsView.java
deleted file mode 100644
index c3928a9..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/EventsView.java
+++ /dev/null
@@ -1,320 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.core.tools.runtime;
-
-import java.util.Arrays;
-import java.util.Iterator;
-import org.eclipse.core.runtime.PerformanceStats;
-import org.eclipse.core.tools.*;
-import org.eclipse.jface.action.*;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.part.WorkbenchPart;
-
-/**
- * Stats View
- * 
- * This spy utility will display globally available statistical
- * information on various plug-ins.  The statistics available are those that
- * are available through the PluginStats class of
- * org.eclipse.core.resource/src/org/eclipse/core/internal/utils
- * 
- * Currently available information includes:
- * 	the id of the statistic 
- * 	the number of notification this plug-in received
- * 	the amount of time spent receiving these notifications
- * 	the number of build requests on this plug-in
- * 	the amount of time spent building this plug-in
- * 
- * Build statistics will only be displayed if the tracing/debug option
- * "build/invoking" in the plug-in org.eclipse.core.resources is set to 
- * true.
- */
-
-public class EventsView extends TableWithTotalView {
-	class EventsViewContentProvider implements ITreeContentProvider {
-		/**
-		 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
-		 */
-		public void dispose() {
-			// do nothing
-		}
-
-		/** @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object) */
-		public Object[] getChildren(Object parentElement) {
-			return new Object[0];
-		}
-
-		/** @see IStructuredContentProvider#getElements(Object) */
-		public Object[] getElements(Object input) {
-			return PerformanceStats.getAllStats();
-		}
-
-		/** @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object) */
-		public Object getParent(Object element) {
-			return null;
-		}
-
-		/** @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object) */
-		public boolean hasChildren(Object element) {
-			return false;
-		}
-
-		/**
-		 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
-		 */
-		public void inputChanged(Viewer aViewer, Object oldInput, Object newInput) {
-			// do nothing
-		}
-	}
-
-	/**
-	 * Class to display the labels for the stats view table.
-	 */
-	class EventsViewLabelProvider extends LabelProvider implements ITableLabelProvider, IColorProvider {
-
-		/**
-		 * @see ITableLabelProvider#getColumnImage(Object, int)
-		 */
-		public Image getColumnImage(Object arg0, int arg1) {
-			return null;
-		}
-
-		/**
-		 * @see ITableLabelProvider#getColumnText(Object, int)
-		 */
-		public String getColumnText(Object element, int columnIndex) {
-			if (!(element instanceof PerformanceStats)) {
-				return Messages.stats_badStat;
-			}
-			PerformanceStats stats = (PerformanceStats) element;
-			switch (columnIndex) {
-				case COLUMN_EVENT :
-					return stats.getEvent();
-				case COLUMN_BLAME :
-					return stats.getBlameString();
-				case COLUMN_CONTEXT :
-					return stats.getContext(); //$NON-NLS-1$
-				case COLUMN_COUNT :
-					return Integer.toString(stats.getRunCount());
-				case COLUMN_TIME :
-					return Long.toString(stats.getRunningTime());
-			}
-			return Messages.stats_badColumn;
-		}
-
-		public Color getForeground(Object element) {
-			if (!(element instanceof PerformanceStats)) {
-				return null;
-			}
-			PerformanceStats stats = (PerformanceStats) element;
-			if (stats.isFailure())
-				return Display.getDefault().getSystemColor(SWT.COLOR_RED);
-			return null;
-		}
-
-		public Color getBackground(Object element) {
-			return null;
-		}
-	}
-	
-	class StatsListener extends PerformanceStats.PerformanceListener {
-		private void asyncExec(Runnable runnable) {
-			final Control control = viewer.getControl();
-			if (control == null || control.isDisposed())
-				return;
-			final Display display = control.getDisplay();
-			if (display.isDisposed())
-				return;
-			display.asyncExec(runnable);
-		}
-		/**
-		 * @see PerformanceStats.PerformanceListener#eventsOccurred(PerformanceStats[])
-		 */
-		public void eventsOccurred(final PerformanceStats[] event) {
-			asyncExec(new Runnable() {
-				public void run() {
-					if (!getViewer().getControl().isDisposed())
-						getViewer().refresh();
-				}
-			});
-		}
-		public void eventFailed(final PerformanceStats event, final long duration) {
-			asyncExec(new Runnable() {
-				public void run() {
-					String msg = "Performance event failure: " + event.getEvent() + " blame: " + event.getBlameString() + " context: " + event.getContext()+ " duration: " + duration; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-					getViewSite().getActionBars().getStatusLineManager().setErrorMessage(msg);
-//					MessageDialog.openError(getSite().getShell(), "Performance failure", msg);
-				}
-			});
-		}
-	}
-
-	// Table of Column Indices
-	public final static int COLUMN_EVENT = 0;
-	public final static int COLUMN_BLAME = 1;
-	public final static int COLUMN_CONTEXT = 2;
-	public final static int COLUMN_COUNT = 3;
-	public final static int COLUMN_TIME = 4;
-
-	private String columnHeaders[] = {
-			Messages.stats_eventHeader, //
-			Messages.stats_blameHeader, //
-			Messages.stats_contextHeader, //
-			Messages.stats_countHeader, //
-			Messages.stats_timeHeader, //
-	};
-	private ColumnLayoutData columnLayouts[] = {
-			new ColumnWeightData(80), // event
-			new ColumnWeightData(180), // blame
-			new ColumnWeightData(40), // context
-			new ColumnPixelData(65), // count 
-			new ColumnPixelData(65)}; // total time
-	private CopyStructuredSelectionAction copyAction;
-	private Action resetAction;
-	private final StatsListener statsListener = new StatsListener();
-
-	/**
-	 * @see org.eclipse.core.tools.TableWithTotalView#computeTotalLine(java.util.Iterator)
-	 */
-	protected String[] computeTotalLine(Iterator iter) {
-		String[] totals = new String[getColumnHeaders().length];
-		int count = 0;
-		int events = 0;
-		int time = 0;
-		if (!iter.hasNext()) {
-			Object[] elements = ((ITreeContentProvider) viewer.getContentProvider()).getElements(viewer.getInput());
-			iter = Arrays.asList(elements == null ? new Object[0] : elements).iterator();
-		}
-		while (iter.hasNext()) {
-			PerformanceStats element = (PerformanceStats) iter.next();
-			events += element.getRunCount();
-			time += element.getRunningTime();
-			count++;
-		}
-		totals[0] = "Total: " + count; //$NON-NLS-1$
-		totals[2] = "" + events; //$NON-NLS-1$
-		totals[3] = "" + time; //$NON-NLS-1$
-		return totals;
-	}
-
-	/**
-	 * @see org.eclipse.core.tools.TableWithTotalView#createActions()
-	 */
-	protected void createActions() {
-		resetAction = new Action("Reset") { //$NON-NLS-1$
-			public void run() {
-				PerformanceStats.clear();
-				getViewer().setInput("");
-				updateTotals();
-			}
-		};
-		resetAction.setToolTipText("Reset all event statistics"); //$NON-NLS-1$
-		resetAction.setImageDescriptor(CoreToolsPlugin.createImageDescriptor("clear.gif")); //$NON-NLS-1$
-		// Add copy selection action
-
-		IActionBars bars = getViewSite().getActionBars();
-		copyAction = new CopyStructuredSelectionAction(new TableSelectionProviderDecorator(viewer));
-		copyAction.registerAsGlobalAction(bars);
-		bars.updateActionBars();
-	}
-
-	/**
-	 * @see org.eclipse.core.tools.TableWithTotalView#createContextMenu()
-	 */
-	protected void createContextMenu() {
-		// creates a context menu with actions and adds it to the viewer control
-		MenuManager menuMgr = new MenuManager();
-		menuMgr.add(resetAction);
-		menuMgr.add(copyAction);
-		Menu menu = menuMgr.createContextMenu(viewer.getControl());
-		viewer.getControl().setMenu(menu);
-	}
-
-	/**
-	 * @see IWorkbenchPart#createPartControl
-	 */
-	public void createPartControl(Composite parent) {
-		super.createPartControl(parent);
-		PerformanceStats.addListener(statsListener);
-		viewer.setInput(""); //$NON-NLS-1$
-	}
-
-	/**
-	 * @see org.eclipse.core.tools.TableWithTotalView#createToolbar()
-	 */
-	protected void createToolbar() {
-		IToolBarManager mgr = getViewSite().getActionBars().getToolBarManager();
-		mgr.add(resetAction);
-	}
-
-	/**
-	 * @see WorkbenchPart#dispose()
-	 */
-	public void dispose() {
-		super.dispose();
-		PerformanceStats.removeListener(statsListener);
-	}
-
-	/**
-	 * @see org.eclipse.core.tools.TableWithTotalView#getColumnHeaders()
-	 */
-	protected String[] getColumnHeaders() {
-		return columnHeaders;
-	}
-
-	/**
-	 * @see org.eclipse.core.tools.TableWithTotalView#getColumnLayout()
-	 */
-	protected ColumnLayoutData[] getColumnLayout() {
-		return columnLayouts;
-	}
-
-	/**
-	 * @see org.eclipse.core.tools.TableWithTotalView#getContentProvider()
-	 */
-	protected ITreeContentProvider getContentProvider() {
-		return new EventsViewContentProvider();
-	}
-
-	/**
-	 * @see org.eclipse.core.tools.TableWithTotalView#getLabelProvider()
-	 */
-	protected ITableLabelProvider getLabelProvider() {
-		return new EventsViewLabelProvider();
-	}
-
-	/**
-	 * @see org.eclipse.core.tools.TableWithTotalView#getSorter(int)
-	 */
-	protected ViewerSorter getSorter(int column) {
-		return new EventsSorter(column);
-	}
-
-	/**
-	 * @see org.eclipse.core.tools.TableWithTotalView#getStatusLineMessage(Object)
-	 */
-	protected String getStatusLineMessage(Object element) {
-		if (!(element instanceof PerformanceStats))
-			return ""; //$NON-NLS-1$
-		return  ((PerformanceStats) element).getBlameString();
-	}
-
-	protected TableTreeViewer getViewer() {
-		return viewer;
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/LoadedClassesView.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/LoadedClassesView.java
deleted file mode 100644
index 9bd84f3..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/LoadedClassesView.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.runtime;
-
-import java.util.Arrays;
-import java.util.Iterator;
-import org.eclipse.core.runtime.internal.stats.ClassStats;
-import org.eclipse.core.runtime.internal.stats.StatsManager;
-import org.eclipse.core.tools.CoreToolsPlugin;
-import org.eclipse.core.tools.TableWithTotalView;
-import org.eclipse.jface.action.*;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.PartInitException;
-
-/**
- * View that display information about classes
- */
-public class LoadedClassesView extends TableWithTotalView {
-	private Action displayStackAction;
-
-	public static String VIEW_ID = LoadedClassesView.class.getName();
-	private String[] columnHeaders = new String[] {"Class", "Order", "Memory", "Plug-in", "Timestamp", "RAM", "ROM"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$
-	private ColumnLayoutData[] columnLayout = new ColumnLayoutData[] {new ColumnWeightData(500), new ColumnWeightData(100), new ColumnWeightData(100), new ColumnWeightData(200), new ColumnPixelData(0), new ColumnPixelData(0), new ColumnPixelData(0)};
-
-	protected String[] getColumnHeaders() {
-		return columnHeaders;
-	}
-
-	protected ColumnLayoutData[] getColumnLayout() {
-		return columnLayout;
-	}
-
-	public void createPartControl(Composite parent) {
-		if (!StatsManager.MONITOR_CLASSES) {
-			Text text = new Text(parent, 0);
-			text.setText("Class monitoring is not enabled."); //$NON-NLS-1$
-			return;
-		}
-		super.createPartControl(parent);
-		viewer.setSelection(StructuredSelection.EMPTY);
-	}
-
-	protected ITreeContentProvider getContentProvider() {
-		return new LoadedClassesViewContentProvider();
-	}
-
-	protected ITableLabelProvider getLabelProvider() {
-		return new LoadedClassesViewLabelProvider();
-	}
-
-	protected ViewerSorter getSorter(int column) {
-		return new LoadedClassesViewSorter(column);
-	}
-
-	/**
-	 * @see org.eclipse.core.tools.TableWithTotalView#getStatusLineMessage(Object)
-	 */
-	protected String getStatusLineMessage(Object element) {
-		return ""; //$NON-NLS-1$
-	}
-
-	protected TableTreeViewer getViewer() {
-		return viewer;
-	}
-
-	protected void createActions() {
-		displayStackAction = new Action("Stack &Trace") { //$NON-NLS-1$
-			public void run() {
-				try {
-					StackTraceView view = (StackTraceView) getSite().getPage().showView(StackTraceView.VIEW_ID);
-					ClassStats clazz = (ClassStats) ((IStructuredSelection) getViewer().getSelection()).getFirstElement();
-					if (clazz == null)
-						return;
-					view.setInput(StatsManager.TRACE_FILENAME, clazz.getTraceStart(), clazz.getTraceEnd());
-				} catch (PartInitException e) {
-					e.printStackTrace();
-				}
-			}
-		};
-		displayStackAction.setToolTipText("Display the class activation stack trace"); //$NON-NLS-1$
-		displayStackAction.setImageDescriptor(CoreToolsPlugin.createImageDescriptor("trace.gif")); //$NON-NLS-1$
-	}
-
-	protected void createToolbar() {
-		IToolBarManager manager = getViewSite().getActionBars().getToolBarManager();
-		manager.add(displayStackAction);
-	}
-
-	public void setInput(Object input) {
-		viewer.setInput(input);
-		viewer.setSelection(StructuredSelection.EMPTY);
-	}
-
-	protected String[] computeTotalLine(Iterator iterator) {
-		String[] totals = new String[getColumnHeaders().length];
-		int ramTotal = 0;
-		int romTotal = 0;
-		int jitTotal = 0;
-		int count = 0;
-		if (!iterator.hasNext()) {
-			Object[] elements = ((ITreeContentProvider) viewer.getContentProvider()).getElements(viewer.getInput());
-			iterator = Arrays.asList(elements == null ? new Object[0] : elements).iterator();
-		}
-		while (iterator.hasNext()) {
-			ClassStats clazz = (ClassStats) iterator.next();
-			VMClassloaderInfo loader = VMClassloaderInfo.getClassloader(clazz.getClassloader().getId());
-			VMClassInfo classInfo = loader.getClass(clazz.getClassName());
-			ramTotal += classInfo.getRAMSize();
-			romTotal += classInfo.getROMSize();
-			jitTotal += classInfo.getJitSize();
-			count++;
-		}
-		totals[0] = "Total: " + count; //$NON-NLS-1$
-		totals[2] = Integer.toString(ramTotal + romTotal);
-		totals[5] = Integer.toString(ramTotal);
-		totals[6] = Integer.toString(romTotal);
-		return totals;
-	}
-
-	public void dispose() {
-		if (displayStackAction != null)
-			displayStackAction.setImageDescriptor(null);
-	}
-
-	protected void createContextMenu() {
-		MenuManager manager = new MenuManager();
-		manager.setRemoveAllWhenShown(true);
-		manager.addMenuListener(new IMenuListener() {
-			public void menuAboutToShow(IMenuManager mgr) {
-				fillContextMenu(mgr);
-			}
-		});
-		Menu menu = manager.createContextMenu(viewer.getControl());
-		viewer.getControl().setMenu(menu);
-		getSite().registerContextMenu(manager, viewer);
-	}
-
-	protected void fillContextMenu(IMenuManager manager) {
-		manager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
-		manager.add(displayStackAction);
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/LoadedClassesViewContentProvider.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/LoadedClassesViewContentProvider.java
deleted file mode 100644
index ab12e26..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/LoadedClassesViewContentProvider.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.runtime;
-
-import java.util.*;
-import org.eclipse.core.runtime.internal.stats.*;
-import org.eclipse.core.tools.IFlattable;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-
-/**
- * Content provider for the LoadedClassesView
- */
-public class LoadedClassesViewContentProvider implements ITreeContentProvider, IFlattable {
-	private boolean flat;
-	private String inputNames[] = new String[0];
-
-	public void setFlat(boolean mode) {
-		flat = mode;
-	}
-
-	public Object[] getChildren(Object element) {
-		if (flat || !(element instanceof ClassStats))
-			return new Object[0];
-		ArrayList result = new ArrayList(10);
-		for (Iterator i = ((ClassStats) element).getLoadedClasses().iterator(); i.hasNext();) {
-			ClassStats child = (ClassStats) i.next();
-			if (filterChildren(child, inputNames))
-				result.add(child);
-		}
-		return result.toArray(new Object[result.size()]);
-	}
-
-	private boolean filterChildren(ClassStats element, String[] filters) {
-		String name = element.getClassloader().getId();
-		for (int i = 0; i < filters.length; i++)
-			if (filters[i].equals(name))
-				return true;
-		ArrayList children = element.getLoadedClasses();
-		for (Iterator i = children.iterator(); i.hasNext();)
-			if (filterChildren((ClassStats) i.next(), filters))
-				return true;
-		return false;
-	}
-
-	public Object getParent(Object element) {
-		if (flat || !(element instanceof ClassStats))
-			return null;
-		return ((ClassStats) element).getLoadedBy();
-	}
-
-	public boolean hasChildren(Object element) {
-		if (flat || !(element instanceof ClassStats))
-			return false;
-		for (Iterator i = ((ClassStats) element).getLoadedClasses().iterator(); i.hasNext();)
-			if (filterChildren((ClassStats) i.next(), inputNames))
-				return true;
-		return false;
-	}
-
-	public Object[] getElements(Object inputElement) {
-		if (!StatsManager.MONITOR_CLASSES)
-			return null;
-		if (inputElement instanceof Object[]) {
-			Object[] elements = (Object[]) inputElement;
-			if (elements.length == 0 || !(elements[0] instanceof BundleStats))
-				return null;
-			Set result = new HashSet(51);
-			for (int i = 0; i < elements.length; i++) {
-				ClassStats[] classes = getClasses(((BundleStats) elements[i]).getSymbolicName());
-				result.addAll(Arrays.asList(classes));
-			}
-			return result.toArray(new Object[result.size()]);
-		}
-		return null;
-	}
-
-	private ClassStats[] getClasses(String id) {
-		ClassloaderStats loader = ClassloaderStats.getLoader(id);
-		if (loader == null)
-			return new ClassStats[0];
-		ClassStats[] classes = loader.getClasses();
-		if (flat)
-			return classes;
-		ArrayList result = new ArrayList();
-		for (int i = 0; i < classes.length; i++) {
-			ClassStats target = classes[i];
-			while (target.getLoadedBy() != null)
-				target = target.getLoadedBy();
-			result.add(target);
-		}
-		return (ClassStats[]) result.toArray(new ClassStats[result.size()]);
-	}
-
-	public void dispose() {
-		// do nothing
-	}
-
-	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-		if (oldInput == newInput)
-			return;
-		if (newInput == null) {
-			inputNames = new String[0];
-			return;
-		}
-		Object[] list = (Object[]) newInput;
-		inputNames = new String[list.length];
-		for (int i = 0; i < list.length; i++)
-			inputNames[i] = ((BundleStats) list[i]).getSymbolicName();
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/LoadedClassesViewLabelProvider.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/LoadedClassesViewLabelProvider.java
deleted file mode 100644
index 3625c64..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/LoadedClassesViewLabelProvider.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.runtime;
-
-import org.eclipse.core.runtime.internal.stats.ClassStats;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * LabelProvider for the LoadedClassesView
- */
-
-public class LoadedClassesViewLabelProvider extends LabelProvider implements ITableLabelProvider {
-
-	public Image getColumnImage(Object element, int columnIndex) {
-		return null;
-	}
-
-	public String getColumnText(Object element, int columnIndex) {
-		if (!(element instanceof ClassStats))
-			return "not a class info"; //$NON-NLS-1$
-		ClassStats clazz = (ClassStats) element;
-		VMClassloaderInfo loader = VMClassloaderInfo.getClassloader(clazz.getClassloader().getId());
-		VMClassInfo classInfo = loader.getClass(clazz.getClassName());
-
-		switch (columnIndex) {
-			case 0 : //"Class name"
-				return clazz.getClassName() + (clazz.isStartupClass() ? "*" : ""); //$NON-NLS-1$ //$NON-NLS-2$
-			case 1 : //		"Loading order",
-				return clazz.getLoadOrder() == -2 ? "<boot>" : "" + clazz.getLoadOrder(); //$NON-NLS-1$ //$NON-NLS-2$
-			case 2 : //		"Memory",
-				return classInfo == null ? "" : "" + (classInfo.getRAMSize() + classInfo.getROMSize()); //$NON-NLS-1$ //$NON-NLS-2$
-			case 3 : //		"Plug-in Id", 
-				return clazz.getClassloader().getId();
-			case 4 : //		"Activation time",
-				return "" + clazz.getTimestamp(); //$NON-NLS-1$
-			case 5 : //		"RAM",
-				return classInfo == null ? "" : "" + classInfo.getRAMSize(); //$NON-NLS-1$ //$NON-NLS-2$
-			case 6 : //		"ROM"
-				return classInfo == null ? "" : "" + classInfo.getROMSize(); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		return ""; //$NON-NLS-1$
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/LoadedClassesViewSorter.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/LoadedClassesViewSorter.java
deleted file mode 100644
index 8d87d3c..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/LoadedClassesViewSorter.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.runtime;
-
-import java.text.Collator;
-import org.eclipse.core.runtime.internal.stats.ClassStats;
-import org.eclipse.core.tools.ISorter;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-
-public class LoadedClassesViewSorter extends ViewerSorter implements ISorter {
-	private boolean reversed = true;
-	private int columnNumber;
-	private Collator collator = Collator.getInstance();
-
-	//	columnHeaders = new String[]{ "Class", "Order", "Memory", "Plug-in", "Timestamp", "RAM", "ROM" };
-	private int[][] SORT_ORDERS_BY_COLUMN = { //
-	{0, 3}, /* Class */{1, 0, 3}, /* Order */{2, 0, 3}, /* Memory*/{3, 0}, /* Plugin */{4, 0, 3}, /* Timestamp */{5, 0, 3}, /* RAM */{6, 0, 3}, /* ROM */
-	};
-
-	public LoadedClassesViewSorter(int columnNumber) {
-		this.columnNumber = columnNumber;
-		if (columnNumber == 0)
-			reversed = false;
-	}
-
-	/**
-	 * Compares two stats objects, sorting first by the main column of this sorter,
-	 * then by subsequent columns, depending on the column sort order.
-	 */
-	public int compare(Viewer viewer, Object o1, Object o2) {
-		ClassStats class1 = (ClassStats) o1;
-		ClassStats class2 = (ClassStats) o2;
-
-		int[] columnSortOrder;
-		columnSortOrder = SORT_ORDERS_BY_COLUMN[columnNumber];
-
-		int result = 0;
-		for (int i = 0; i < columnSortOrder.length; ++i) {
-			result = compareColumnValue(columnSortOrder[i], class1, class2);
-			if (result != 0)
-				break;
-		}
-		if (reversed)
-			result = -result;
-		return result;
-	}
-
-	/**
-	 * Compares two markers, based only on the value of the specified column.
-	 */
-	private int compareColumnValue(int column, ClassStats class1, ClassStats class2) {
-		VMClassloaderInfo loader = VMClassloaderInfo.getClassloader(class1.getClassloader().getId());
-		VMClassInfo classInfo1 = loader.getClass(class1.getClassName());
-		loader = VMClassloaderInfo.getClassloader(class2.getClassloader().getId());
-		VMClassInfo classInfo2 = loader.getClass(class2.getClassName());
-		switch (column) {
-			case 0 : { /* class name */
-				String package1 = getPackageName(class1.getClassName());
-				String package2 = getPackageName(class2.getClassName());
-				int result = collator.compare(package1, package2);
-				return result != 0 ? result : collator.compare(class1.getClassName(), class2.getClassName());
-			}
-			case 1 : /*Loading order */
-				return class1.getLoadOrder() - class2.getLoadOrder();
-			case 2 : /* Memory */
-				return (classInfo1.getRAMSize() + classInfo1.getROMSize()) - (classInfo2.getRAMSize() + classInfo2.getROMSize());
-			case 3 : /* Plugin Id */
-				return collator.compare(class1.getClassloader().getId(), class2.getClassloader().getId());
-			case 4 : /* Activation time */
-				return (int) (class1.getTimestamp() - class2.getTimestamp());
-			case 5 : /* RAM */
-				return classInfo1.getRAMSize() - classInfo2.getRAMSize();
-			case 6 : /* ROM */
-				return classInfo1.getROMSize() - classInfo2.getROMSize();
-		}
-		return 0;
-	}
-
-	private String getPackageName(String className) {
-		int index = className.lastIndexOf('.');
-		return index == -1 ? "" : className.substring(0, index); //$NON-NLS-1$
-	}
-
-	/**
-	 * Returns the number of the column by which this is sorting.
-	 */
-	public int getColumnNumber() {
-		return columnNumber;
-	}
-
-	/**
-	 * Returns true for descending, or false for ascending sorting order.
-	 */
-	public boolean isReversed() {
-		return reversed;
-	}
-
-	/**
-	 * Sets the sorting order.
-	 */
-	public void setReversed(boolean value) {
-		reversed = value;
-	}
-
-	/**
-	 * @see org.eclipse.core.tools.ISorter#states()
-	 */
-	public int states() {
-		return 3;
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/PluginDataSheetView.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/PluginDataSheetView.java
deleted file mode 100644
index 0dcc924..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/PluginDataSheetView.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.runtime;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.internal.stats.*;
-import org.eclipse.core.tools.BaseTextView;
-import org.eclipse.core.tools.DeepSize;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.ISelectionListener;
-import org.eclipse.ui.IWorkbenchPart;
-import org.osgi.framework.Bundle;
-
-/**
- * View displaying information about the resources for a given plugin
- *
- */
-public class PluginDataSheetView extends BaseTextView implements ISelectionListener {
-
-	/** The id by which this view is known in the plug-in registry */
-	public static final String VIEW_ID = PluginDataSheetView.class.getName();
-
-	public void createPartControl(Composite parent) {
-		super.createPartControl(parent);
-		getViewSite().getPage().addSelectionListener(this);
-	}
-
-	public void dispose() {
-		getViewSite().getPage().removeSelectionListener(this);
-	}
-
-	public void selectionChanged(IWorkbenchPart part, ISelection selection) {
-		if (selection instanceof IStructuredSelection) {
-			Object first = ((IStructuredSelection) selection).getFirstElement();
-			if (first != null && first instanceof BundleStats) {
-				viewer.getDocument().set(printStats((BundleStats) first));
-				viewer.refresh();
-			}
-		}
-	}
-
-	private String printStats(BundleStats descriptor) {
-		StringBuffer result = new StringBuffer(200);
-		ClassloaderStats classloader = ClassloaderStats.getLoader(descriptor.getSymbolicName());
-		printResourceBundleStats(result, classloader == null ? null : classloader.getBundles(), descriptor);
-		result.append('\n');
-		printExtensionLoadingStats(result, Platform.getExtensionRegistry().getExtensions(descriptor.getSymbolicName()));
-		return result.toString();
-	}
-
-	private void printExtensionLoadingStats(StringBuffer result, IExtension[] extensions) {
-		if (extensions.length == 0) {
-			result.append("No extensions contributed by this plug-in\n"); //$NON-NLS-1$
-			return;
-		}
-		result.append("Extension loading stats:\n"); //$NON-NLS-1$
-		for (int i = 0; i < extensions.length; i++) {
-			IExtension extension = extensions[i];
-			result.append('\t');
-			result.append(extension.getExtensionPointUniqueIdentifier());
-			result.append(" <- "); //$NON-NLS-1$
-			result.append(extension.getUniqueIdentifier());
-			result.append('\n');
-		}
-	}
-
-	private void printResourceBundleStats(StringBuffer result, ArrayList bundles, BundleStats info) {
-		if (bundles == null || bundles.size() == 0) {
-			result.append("No resources loaded by this plug-in\n"); //$NON-NLS-1$
-			return;
-		}
-		result.append("Resource bundles stats:\n"); //$NON-NLS-1$
-		for (Iterator iterator = bundles.iterator(); iterator.hasNext();) {
-			ResourceBundleStats resource = (ResourceBundleStats) iterator.next();
-			result.append('\t');
-			result.append(resource.getFileName());
-			result.append("\tElements: #" + resource.getKeyCount()); //$NON-NLS-1$
-			long totalSize;
-			// if hashsize == 0, we should compute the total size using DeepSize
-			if (resource.getHashSize() == 0) {
-				DeepSize.reset();
-				DeepSize calculator = new DeepSize();
-				Bundle bundle = Platform.getBundle(info.getSymbolicName());
-				if (bundle != null)
-					calculator.deepSize(Platform.getResourceBundle(bundle));
-				totalSize = calculator.getSize();
-			} else
-				totalSize = resource.getTotalSize();
-			result.append(" \ttotal: " + totalSize); //$NON-NLS-1$
-			result.append("b \tkeys: " + resource.getKeySize()); //$NON-NLS-1$
-			result.append("b \tvalues: " + resource.getValueSize() + "b\n"); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/PluginDependencyGraphNode.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/PluginDependencyGraphNode.java
deleted file mode 100644
index 324ff54..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/PluginDependencyGraphNode.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.runtime;
-
-import java.util.*;
-import org.eclipse.core.tools.Messages;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.util.NLS;
-
-/**
- *  This class is used to build up a dependency graph.  The full dependency
- *  graph is just a hash table containing PluginDependencyGraphNode's.  Each
- *  node represents one plug-in.  They are retrievable based on the plug-in
- *  id.  Each node has a list of all the plug-in ids for plug-ins that this
- *  plug-in requires (children) and another list of all the plug-in ids that
- *  require this particular plug-in (ancestors).
- */
-public class PluginDependencyGraphNode {
-
-	private BundleDescription descriptor = null;
-	private Set children = new HashSet();
-	private Set ancestors = new HashSet();
-
-	/**
-	 * Constructor for this class. Each node is associated with a plug-in so 
-	 * we accept the plug-in descriptor here and keep it around for later use.
-	 */
-	public PluginDependencyGraphNode(BundleDescription descriptor) {
-		this.descriptor = descriptor;
-	}
-
-	/**
-	 * Add the given node to this node's set of ancestors.
-	 */
-	public void addAncestor(PluginDependencyGraphNode ancestor) {
-		ancestors.add(ancestor);
-	}
-
-	/**
-	 * Add the given node to this node's set of children.
-	 */
-	public void addChild(PluginDependencyGraphNode child) {
-		children.add(child);
-	}
-
-	/**
-	 * Return the identifier for this node. It is the unique plug-in identifier
-	 * for this object's plug-in descriptor.
-	 * 
-	 * @return the plug-in id
-	 */
-	public String getId() {
-		return descriptor.getSymbolicName();
-	}
-
-	/**
-	 * Return a string representation of this object. It should be nicely formated
-	 * and include the list of children and ancestor nodes.
-	 */
-	public String toDeepString() {
-		StringBuffer buffer = new StringBuffer();
-
-		// write ID
-		writeln(buffer, 0, NLS.bind(Messages.stats_pluginid, descriptor.getSymbolicName()));
-
-		// write ancestors
-		if (ancestors.size() == 0) {
-			writeln(buffer, 1, Messages.depend_noParentPlugins);
-		} else {
-			writeln(buffer, 1, Messages.depend_requiredBy);
-			for (Iterator i = ancestors.iterator(); i.hasNext();) {
-				PluginDependencyGraphNode ancestor = (PluginDependencyGraphNode) i.next();
-				writeln(buffer, 2, ancestor.getId());
-			}
-		}
-
-		// write children
-		if (children.size() == 0) {
-			writeln(buffer, 1, Messages.depend_noChildrenPlugins);
-		} else {
-			writeln(buffer, 1, Messages.depend_requires);
-			for (Iterator i = children.iterator(); i.hasNext();) {
-				PluginDependencyGraphNode child = (PluginDependencyGraphNode) i.next();
-				writeln(buffer, 2, child.getId());
-			}
-		}
-		return buffer.toString();
-	}
-
-	/**
-	 * Ultility method to write a string and cr to the given buffer. Indent the
-	 * text the given number of tabs.
-	 */
-	private void writeln(StringBuffer buffer, int indent, String text) {
-		for (int i = 0; i < indent; i++)
-			buffer.append('\t');
-		buffer.append(text);
-		buffer.append('\n');
-	}
-
-	/**
-	 * @see java.lang.Object#equals(Object)
-	 */
-	public boolean equals(Object obj) {
-		if (obj == null)
-			return false;
-		if (!(obj instanceof PluginDependencyGraphNode))
-			return false;
-		PluginDependencyGraphNode other = (PluginDependencyGraphNode) obj;
-		return this.getId().equals(other.getId());
-	}
-
-	/**
-	 * @see java.lang.Object#hashCode()
-	 */
-	public int hashCode() {
-		return getId().hashCode();
-	}
-
-	/**
-	 * @see java.lang.Object#toString()
-	 */
-	public String toString() {
-		StringBuffer buffer = new StringBuffer();
-		buffer.append("PluginDependencyGraphNode("); //$NON-NLS-1$
-		buffer.append(descriptor.getSymbolicName());
-		buffer.append(')');
-		return buffer.toString();
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/PluginDependencyPerspective.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/PluginDependencyPerspective.java
deleted file mode 100644
index ba8e2d6..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/PluginDependencyPerspective.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.runtime;
-
-import org.eclipse.ui.*;
-
-/**
- * A perspective for working with metadata files.
- */
-public class PluginDependencyPerspective implements IPerspectiveFactory {
-	/**
-	 * Creates a layout containing the following views:
-	 * 	PluginListView and
-	 * 	PluginDependencyView
-	 * @see org.eclipse.ui.IPerspectiveFactory#createInitialLayout(org.eclipse.ui.IPageLayout)
-	 */
-	public void createInitialLayout(IPageLayout layout) {
-		String editorAreaId = layout.getEditorArea();
-
-		layout.setEditorAreaVisible(false);
-
-		IFolderLayout left = layout.createFolder("left", IPageLayout.LEFT, (float) 0.30, editorAreaId); //$NON-NLS-1$
-		left.addView(PluginListView.VIEW_ID);
-
-		IFolderLayout right = layout.createFolder("right", IPageLayout.RIGHT, (float) 0.7, editorAreaId); //$NON-NLS-1$
-		right.addView(PluginDependencyView.VIEW_ID);
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/PluginDependencyView.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/PluginDependencyView.java
deleted file mode 100644
index 97f46cc..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/PluginDependencyView.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.runtime;
-
-import java.util.HashMap;
-import java.util.Map;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.internal.stats.BundleStats;
-import org.eclipse.core.tools.*;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.text.Document;
-import org.eclipse.jface.text.TextViewer;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.osgi.service.resolver.*;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.*;
-
-public class PluginDependencyView extends SpyView implements ISelectionListener {
-
-	private TextViewer viewer;
-	private Map dependencyGraph = null;
-
-	/** The id by which this view is known in the plug-in registry */
-	public static final String VIEW_ID = PluginDependencyView.class.getName();
-
-	/**
-	 * @see IWorkbenchPart#createPartControl
-	 */
-	public void createPartControl(Composite parent) {
-		viewer = new TextViewer(parent, SWT.V_SCROLL | SWT.H_SCROLL | SWT.WRAP | SWT.READ_ONLY);
-		viewer.setDocument(new Document());
-
-		IActionBars bars = getViewSite().getActionBars();
-
-		final GlobalAction clearOutputAction = new ClearTextAction(viewer.getDocument());
-		clearOutputAction.registerAsGlobalAction(bars);
-
-		final GlobalAction selectAllAction = new SelectAllAction(viewer);
-		selectAllAction.registerAsGlobalAction(bars);
-
-		// Delete action shortcuts are not captured by the workbench
-		// so we need our key binding service to handle Delete keystrokes for us
-		this.viewer.getControl().addKeyListener(new KeyAdapter() {
-			public void keyPressed(KeyEvent e) {
-				if (e.character == SWT.DEL)
-					clearOutputAction.run();
-			}
-		});
-
-		GlobalAction copyAction = new CopyTextSelectionAction(viewer);
-		copyAction.registerAsGlobalAction(bars);
-
-		bars.getToolBarManager().add(clearOutputAction);
-
-		bars.updateActionBars();
-
-		// creates a context menu with actions and adds it to the viewer control
-		MenuManager menuMgr = new MenuManager();
-		menuMgr.add(copyAction);
-		menuMgr.add(clearOutputAction);
-		Menu menu = menuMgr.createContextMenu(viewer.getControl());
-		viewer.getControl().setMenu(menu);
-
-		getViewSite().getPage().addSelectionListener(this);
-	}
-
-	/**
-	 * @see org.eclipse.ui.IWorkbenchPart#dispose()
-	 */
-	public void dispose() {
-		getViewSite().getPage().removeSelectionListener(this);
-		super.dispose();
-		dependencyGraph = null;
-	}
-
-	/**
-	 * Build the table of plug-in dependencies. Iterate over all the plug-ins in the
-	 * plug-in registry and the cycle through the list of pre-requisites and create the
-	 * parent/child relationships in the nodes.
-	 */
-	private Map getDependencyGraph() {
-		if (dependencyGraph != null)
-			return dependencyGraph;
-		// Build up the dependency graph (see PluginDependencyGraphNode) so
-		// we have the information readily available for any plug-in.
-		State state = Platform.getPlatformAdmin().getState(false);
-		BundleDescription[] plugins = state.getBundles();
-		dependencyGraph = new HashMap();
-		for (int i = 0; i < plugins.length; i++) {
-			BundleDescription descriptor = plugins[i];
-			PluginDependencyGraphNode node = (PluginDependencyGraphNode) dependencyGraph.get(new Long(descriptor.getBundleId()));
-			if (node == null) {
-				node = new PluginDependencyGraphNode(descriptor);
-				dependencyGraph.put(new Long(descriptor.getBundleId()), node);
-			}
-
-			// Cycle through the prerequisites
-			BundleSpecification[] requires = descriptor.getRequiredBundles();
-			for (int j = 0; j < requires.length; j++) {
-				BundleDescription childDesc = (BundleDescription) requires[j].getSupplier();
-				// if the child doesn't exist then move to the next child
-				if (childDesc == null)
-					continue;
-				
-				// if the child entry is not in the table yet then add it
-				PluginDependencyGraphNode childNode = (PluginDependencyGraphNode) dependencyGraph.get(new Long(childDesc.getBundleId()));
-				if (childNode == null) {
-					childNode = new PluginDependencyGraphNode(childDesc);
-					dependencyGraph.put(new Long(childDesc.getBundleId()), childNode);
-				}
-
-				// Add the child to this node's children and set this node as an ancestor
-				// of the child node
-				node.addChild(childNode);
-				childNode.addAncestor(node);
-			}
-		}
-		return dependencyGraph;
-	}
-
-	/**
-	 * @see ISelectionListener#selectionChanged(IWorkbenchPart, ISelection)
-	 */
-	public void selectionChanged(IWorkbenchPart part, ISelection selection) {
-		if (!(selection instanceof IStructuredSelection))
-			return;
-		Object element = ((IStructuredSelection) selection).getFirstElement();
-		long id = -1;
-		String name = null;
-		if (element instanceof BundleDescription) {
-			id = ((BundleDescription) element).getBundleId();
-			name = ((BundleDescription) element).getSymbolicName();
-		}
-		if (element instanceof BundleStats) {
-			id = ((BundleStats) element).getId();
-			name = ((BundleStats) element).getSymbolicName();
-		}
-		if (id == -1)
-			return;
-		PluginDependencyGraphNode node = (PluginDependencyGraphNode) getDependencyGraph().get(new Long(id));
-		String text = node == null ? NLS.bind(Messages.depend_noInformation, name) : node.toDeepString();
-		viewer.getDocument().set(text);
-		viewer.refresh();
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/PluginListView.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/PluginListView.java
deleted file mode 100644
index 881f959..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/PluginListView.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.runtime;
-
-import java.util.*;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.tools.*;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-
-public class PluginListView extends SpyView implements IStructuredContentProvider {
-
-	// cache the plug-in list
-	private Object[] bundles = null;
-
-	/** The id by which this view is known in the plug-in registry */
-	public static final String VIEW_ID = PluginListView.class.getName();
-
-	/**
-	 * Class which provides the text labels for the view.
-	 */
-	class PluginListLabelProvider extends LabelProvider implements ITableLabelProvider {
-		/**
-		 * @see ITableLabelProvider#getColumnImage(Object, int)
-		 */
-		public Image getColumnImage(Object arg0, int arg1) {
-			return null;
-		}
-
-		/**
-		 * @see ITableLabelProvider#getColumnText(Object, int)
-		 */
-		public String getColumnText(Object element, int columnIndex) {
-			return element == null ? Messages.depend_badPluginId : ((BundleDescription) element).getSymbolicName();
-		}
-	}
-
-	/**
-	 * @see IStructuredContentProvider#getElements(Object)
-	 */
-	public Object[] getElements(Object arg0) {
-		if (bundles == null) {
-			// before caching the array of descriptors, sort them.
-			// we have to use a comparator here because plug-in
-			// descriptors cannot be compared against each other
-			// in a tree set.
-			Comparator comparator = new Comparator() {
-				public int compare(Object obj1, Object obj2) {
-					String id1 = ((BundleDescription) obj1).getSymbolicName();
-					String id2 = ((BundleDescription) obj2).getSymbolicName();
-					return id1.compareTo(id2);
-				}
-			};
-			Set set = new TreeSet(comparator);
-			BundleContext context = CoreToolsPlugin.getDefault().getContext();
-			Bundle[] allBundles = context.getBundles();
-			State state = Platform.getPlatformAdmin().getState(false);
-			for (int i = 0; i < allBundles.length; i++)
-				set.add(state.getBundle(allBundles[i].getBundleId()));
-			bundles = set.toArray();
-		}
-		return bundles;
-	}
-
-	/**
-	 * @see IContentProvider#dispose()
-	 */
-	public void dispose() {
-		bundles = null;
-	}
-
-	/**
-	 * @see IContentProvider#inputChanged(Viewer, Object, Object)
-	 */
-	public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
-		// do nothing
-	}
-
-	/**
-	 * @see org.eclipse.ui.IWorkbenchPart#createPartControl(Composite)
-	 */
-	public void createPartControl(Composite parent) {
-		// Create viewer.
-		ListViewer viewer = new ListViewer(parent, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
-		viewer.setContentProvider(this);
-		viewer.setLabelProvider(new PluginListLabelProvider());
-		viewer.setInput(""); //$NON-NLS-1$
-		getSite().setSelectionProvider(viewer);
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/PreferenceStatsView.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/PreferenceStatsView.java
deleted file mode 100644
index 0cd0ce0..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/PreferenceStatsView.java
+++ /dev/null
@@ -1,407 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.core.tools.runtime;
-
-import java.util.*;
-import org.eclipse.core.internal.preferences.EclipsePreferences;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.preferences.*;
-import org.eclipse.core.tools.*;
-import org.eclipse.jface.action.*;
-import org.eclipse.jface.text.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.IActionBars;
-import org.osgi.service.prefs.BackingStoreException;
-
-/**
- * Text view that dumps sizeof info and stats about the
- * Eclipse preferences tree.
- * 
- * @since 3.0
- */
-public class PreferenceStatsView extends SpyView {
-
-	// The JFace widget used for showing the Element Tree info.  
-	protected TextViewer viewer;
-
-	private IAction updateAction;
-
-	class UpdateAction extends Action {
-
-		// number of nodes in the tree
-		int nodeCount;
-		// number of key/value pairs in the tree
-		int kvCount;
-		// number of nodes without key/value pairs
-		int emptyNodes;
-		// size of the tree
-		int treeSize;
-		// list of node with key/value pairs
-		Set nonEmptyNodes;
-
-		// root node
-		IEclipsePreferences rootNode = Platform.getPreferencesService().getRootNode();
-
-		UpdateAction() {
-			super("Update view"); //$NON-NLS-1$
-			this.setToolTipText("Update"); //$NON-NLS-1$
-			this.setImageDescriptor(CoreToolsPlugin.createImageDescriptor("refresh.gif")); //$NON-NLS-1$
-		}
-
-		public void run() {
-			super.run();
-			reset();
-			try {
-				visitTree();
-			} catch (BackingStoreException e) {
-				e.printStackTrace();
-			}
-			updateTextView();
-			reset();
-		}
-
-		void reset() {
-			nodeCount = 0;
-			kvCount = 0;
-			emptyNodes = 0;
-			treeSize = 0;
-			nonEmptyNodes = new TreeSet();
-		}
-
-		int basicSizeof(IEclipsePreferences node) {
-			if (node instanceof EclipsePreferences)
-				return basicSizeof((EclipsePreferences) node);
-
-			// name
-			int count = sizeof(node.name());
-
-			// key/value pairs
-			try {
-				String[] keys = node.keys();
-				for (int i = 0; i < keys.length; i++) {
-					count += sizeof(keys[i]);
-					String value = node.get(keys[i], null);
-					count += sizeof(value);
-				}
-			} catch (BackingStoreException e) {
-				e.printStackTrace();
-			}
-			return count;
-		}
-
-		int calculateOldSize() {
-			int count = 0;
-			IPluginRegistry registry = Platform.getPluginRegistry();
-			if (registry == null)
-				return count;
-			IPluginDescriptor[] descriptors = registry.getPluginDescriptors();
-			if (descriptors == null)
-				return count;
-			for (int i = 0; i < descriptors.length; i++) {
-				IPluginDescriptor desc = descriptors[i];
-				//				if (desc.isPluginActivated())
-				count += calculateOldSizeFor(desc.getUniqueIdentifier());
-			}
-			return count;
-		}
-
-		int calculateOldSizeFor(String pluginID) {
-			int count = 0;
-			// 12 for the object header + 4 for each field
-			count += 12;
-
-			// dirty boolean
-			count += 4;
-
-			// listener list
-			// TODO
-			count += 4;
-
-			// Properties properties
-			count += 4;
-			IEclipsePreferences node = new InstanceScope().getNode(pluginID);
-			if (node != null) {
-				// add the key/value pairs
-				// TODO rough estimate
-				try {
-					String[] keys = node.keys();
-					for (int i = 0; i < keys.length; i++) {
-						count += sizeof(keys[i]);
-						String value = node.get(keys[i], null);
-						count += sizeof(value);
-					}
-				} catch (BackingStoreException e) {
-					e.printStackTrace();
-				}
-			}
-
-			// Properties defaults
-			count += 4;
-			node = new DefaultScope().getNode(pluginID);
-			if (node != null) {
-				// add the key/value pairs
-				// TODO rough estimate
-				try {
-					String[] keys = node.keys();
-					for (int i = 0; i < keys.length; i++) {
-						count += sizeof(keys[i]);
-						String value = node.get(keys[i], null);
-						count += sizeof(value);
-					}
-				} catch (BackingStoreException e) {
-					e.printStackTrace();
-				}
-			}
-
-			return count;
-		}
-
-		/*
-		 * 12 for the object header
-		 * 4 for each slot
-		 */
-		int basicSizeof(EclipsePreferences node) {
-			int count = 12;
-
-			// name
-			count += 4;
-			count += sizeof(node.name());
-
-			// dirty boolean
-			count += 4;
-
-			// removed boolean
-			count += 4;
-
-			// loading boolean
-			count += 4;
-
-			// slot for the parent pointer
-			count += 4;
-
-			// child map
-			// TODO this isn't quite right but is ok for now
-			count += 4;
-			String[] childrenNames = node.childrenNames();
-			for (int i = 0; i < childrenNames.length; i++)
-				count += sizeof(childrenNames[i]);
-
-			// node change listener list
-			// TODO
-			count += 4;
-
-			// preference change listener list
-			// TODO
-			count += 4;
-
-			// cached path
-			count += 4;
-			count += sizeof(node.absolutePath());
-
-			// key/value pairs
-			// TODO this isn't quite right but is ok for now
-			count += 4;
-			String[] keys = node.keys();
-			for (int i = 0; i < keys.length; i++) {
-				count += sizeof(keys[i]);
-				String value = node.get(keys[i], null);
-				count += sizeof(value);
-			}
-
-			return count;
-		}
-
-		int basicSizeof(Map map) {
-			if (map == null)
-				return 0;
-
-			//formula taken from BundleStats
-			int count = (int) Math.round(44 + (16 + (map.size() * 1.25 * 4)) + (24 * map.size()));
-
-			for (Iterator it = map.entrySet().iterator(); it.hasNext();) {
-				Map.Entry entry = (Map.Entry) it.next();
-				count += sizeof(entry.getKey());
-				count += sizeof(entry.getValue());
-			}
-			return count;
-		}
-
-		/**
-		 * All sizeof tests should go through this central method to weed out
-		 * duplicates.
-		 */
-		int sizeof(Object object) {
-			if (object == null)//|| DeepSize.ignore(object))
-				return 0;
-			if (object instanceof String)
-				return 44 + 2 * ((String) object).length();
-			if (object instanceof byte[])
-				return 16 + ((byte[]) object).length;
-			if (object instanceof Integer)
-				return 16;
-			if (object instanceof Map)
-				return basicSizeof((Map) object);
-			if (object instanceof IEclipsePreferences)
-				return basicSizeof((IEclipsePreferences) object);
-			if (object instanceof QualifiedName) {
-				QualifiedName name = (QualifiedName) object;
-				return 20 + sizeof(name.getQualifier()) + sizeof(name.getLocalName());
-			}
-			// unknown -- use deep size
-			return 0;
-		}
-
-		void visitTree() throws BackingStoreException {
-			// count the number of nodes in the preferences tree
-			reset();
-			IPreferenceNodeVisitor visitor = new IPreferenceNodeVisitor() {
-				public boolean visit(IEclipsePreferences node) {
-					try {
-						treeSize += sizeof(node);
-						nodeCount++;
-						int keys = node.keys().length;
-						kvCount += keys;
-						if (keys == 0)
-							emptyNodes++;
-						else
-							nonEmptyNodes.add(node.absolutePath() + " (" + keys + ")"); //$NON-NLS-1$//$NON-NLS-2$
-					} catch (BackingStoreException e) {
-						e.printStackTrace();
-					}
-					return true;
-				}
-			};
-			rootNode.accept(visitor);
-		}
-
-		void updateTextView() {
-			final StringBuffer buffer = new StringBuffer();
-			buffer.append("Size of Eclipse 2.1 preference objects: " + prettyPrint(calculateOldSize()) + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
-			buffer.append("Total node count: " + prettyPrint(nodeCount) + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
-			buffer.append("Nodes without keys: " + prettyPrint(emptyNodes) + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
-			buffer.append("Key/value pairs: " + prettyPrint(kvCount) + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
-			buffer.append("Total size of tree: " + prettyPrint(treeSize) + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
-			buffer.append("Nodes with key/value pairs:\n"); //$NON-NLS-1$
-			for (Iterator i = nonEmptyNodes.iterator(); i.hasNext();)
-				buffer.append("\t" + i.next() + "\n"); //$NON-NLS-1$//$NON-NLS-2$
-
-			//post changes to UI thread
-			viewer.getControl().getDisplay().asyncExec(new Runnable() {
-				public void run() {
-					if (!viewer.getControl().isDisposed()) {
-						IDocument doc = viewer.getDocument();
-						doc.set(buffer.toString());
-						viewer.setDocument(doc);
-					}
-				}
-			});
-		}
-
-		private String prettyPrint(int i) {
-			StringBuffer buf = new StringBuffer();
-			for (;;) {
-				if (i < 1000) {
-					String val = Integer.toString(i);
-					//pad with zeros if necessary
-					if (buf.length() > 0) {
-						if (val.length() < 2)
-							buf.append('0');
-						if (val.length() < 3)
-							buf.append('0');
-					}
-					buf.append(val);
-					return buf.toString();
-				}
-				if (i < 1000000) {
-					String val = Integer.toString(i / 1000);
-					//pad with zeros if necessary
-					if (buf.length() > 0) {
-						if (val.length() < 2)
-							buf.append('0');
-						if (val.length() < 3)
-							buf.append('0');
-					}
-					buf.append(val);
-					buf.append(',');
-					i = i % 1000;
-					continue;
-				}
-				buf.append(Integer.toString(i / 1000000));
-				buf.append(',');
-				i = i % 1000000;
-			}
-		}
-	}
-
-	/**
-	 * @see org.eclipse.ui.IWorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
-	 */
-	public void createPartControl(Composite parent) {
-
-		viewer = new TextViewer(parent, SWT.V_SCROLL | SWT.H_SCROLL | SWT.WRAP | SWT.READ_ONLY);
-		viewer.setDocument(new Document());
-
-		IActionBars bars = getViewSite().getActionBars();
-
-		final GlobalAction clearOutputAction = new ClearTextAction(viewer.getDocument());
-		clearOutputAction.registerAsGlobalAction(bars);
-
-		final GlobalAction selectAllAction = new SelectAllAction(viewer);
-		selectAllAction.registerAsGlobalAction(bars);
-
-		IMenuManager barMenuManager = getViewSite().getActionBars().getMenuManager();
-		updateAction = new UpdateAction();
-		barMenuManager.add(updateAction);
-
-		// Delete action shortcuts are not captured by the workbench
-		// so we need our key binding service to handle Delete keystrokes for us
-
-		this.viewer.getControl().addKeyListener(new KeyAdapter() {
-			public void keyPressed(KeyEvent e) {
-				if (e.character == SWT.DEL)
-					clearOutputAction.run();
-			}
-		});
-
-		GlobalAction copyAction = new CopyTextSelectionAction(viewer);
-		copyAction.registerAsGlobalAction(bars);
-
-		bars.getToolBarManager().add(updateAction);
-		bars.getToolBarManager().add(clearOutputAction);
-
-		bars.updateActionBars();
-
-		// creates a context menu with actions and adds it to the viewer control
-		MenuManager menuMgr = new MenuManager();
-		menuMgr.add(copyAction);
-		menuMgr.add(clearOutputAction);
-		Menu menu = menuMgr.createContextMenu(viewer.getControl());
-		viewer.getControl().setMenu(menu);
-
-		// populate the view with the initial data
-		if (updateAction != null)
-			updateAction.run();
-	}
-
-	/**
-	 * @see org.eclipse.ui.IWorkbenchPart#dispose()
-	 */
-	public void dispose() {
-		super.dispose();
-		updateAction = null;
-	}
-
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/RuntimeSpyPerspective.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/RuntimeSpyPerspective.java
deleted file mode 100644
index cd62026..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/RuntimeSpyPerspective.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.runtime;
-
-import org.eclipse.ui.IPageLayout;
-import org.eclipse.ui.IPerspectiveFactory;
-
-public class RuntimeSpyPerspective implements IPerspectiveFactory {
-
-	public RuntimeSpyPerspective() {
-		super();
-	}
-
-	public void createInitialLayout(IPageLayout layout) {
-		layout.setEditorAreaVisible(false);
-		layout.addView(ActivePluginsView.VIEW_ID, IPageLayout.LEFT, 0.75f, layout.getEditorArea());
-		layout.addView(PluginDataSheetView.VIEW_ID, IPageLayout.RIGHT, 0.75f, ActivePluginsView.VIEW_ID);
-		layout.addView(LoadedClassesView.VIEW_ID, IPageLayout.BOTTOM, 0.50f, ActivePluginsView.VIEW_ID);
-		layout.addView(StackTraceView.VIEW_ID, IPageLayout.BOTTOM, 0.25f, PluginDataSheetView.VIEW_ID);
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/StackTraceView.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/StackTraceView.java
deleted file mode 100644
index e3b2bd0..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/StackTraceView.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.runtime;
-
-import java.io.*;
-import org.eclipse.core.tools.BaseTextView;
-
-public class StackTraceView extends BaseTextView {
-
-	/** The id by which this view is known in the plug-in registry */
-	public static final String VIEW_ID = StackTraceView.class.getName();
-
-	public StackTraceView() {
-		super();
-	}
-
-	public Object getAdapter(Class adapter) {
-		return null;
-	}
-
-	public void setInput(String stackFileName, long begin, long end) {
-		if (begin == -1 || end == -1) {
-			viewer.getDocument().set("No stack trace available.\nSee <eclipse install>/plugins/org.eclipse.osgi/.options"); //$NON-NLS-1$
-			viewer.refresh();
-			return;
-		}
-
-		try {
-			byte[] chars = new byte[0];
-			FileInputStream fis = new FileInputStream(stackFileName);
-			try {
-				fis.skip(begin);
-				chars = new byte[(int) (end - begin)];
-				fis.read(chars);
-			} finally {
-				fis.close();
-			}
-			viewer.getDocument().set(new String(chars));
-			viewer.refresh();
-		} catch (FileNotFoundException e) {
-			// ignore
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/VMClassInfo.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/VMClassInfo.java
deleted file mode 100644
index 25cdf8c..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/VMClassInfo.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.runtime;
-
-public class VMClassInfo {
-	String name;
-	int ramSize = 0;
-	int romSize = 0;
-	int jitSize = 0;
-
-	public VMClassInfo(String name) {
-		this.name = name.replace('/', '.');
-	}
-
-	public int getJitSize() {
-		return jitSize;
-	}
-
-	public String getName() {
-		return name;
-	}
-
-	public int getRAMSize() {
-		return ramSize;
-	}
-
-	public int getROMSize() {
-		return romSize;
-	}
-
-	public void setJITSize(int value) {
-		jitSize = value;
-	}
-
-	public void setRAMSize(int value) {
-		ramSize = value;
-	}
-
-	public void setROMSize(int value) {
-		romSize = value;
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/VMClassloaderInfo.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/VMClassloaderInfo.java
deleted file mode 100644
index 98ef0ff..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/runtime/VMClassloaderInfo.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.runtime;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class VMClassloaderInfo {
-
-	protected String id;
-	protected ClassLoader loader;
-	protected VMClassInfo[] classes;
-	protected int allocRAM = 0;
-	protected int allocROM = 0;
-	protected int usedRAM = 0;
-	protected int usedROM = 0;
-
-	public static boolean hasNatives = false;
-	protected static Map loaders = new HashMap(20);
-
-	public static VMClassInfo[] getBaseClasses() {
-		return new VMClassInfo[0];
-	}
-
-	public static VMClassloaderInfo getClassloader(String id) {
-		return new VMClassloaderInfo(id, null);
-	}
-
-	public static void refreshInfos() {
-		loaders = new HashMap(20);
-	}
-
-	protected VMClassloaderInfo(String id, ClassLoader loader) {
-		this.id = id;
-		if (loader != null)
-			this.loader = loader;
-	}
-
-	public int getAllocRAM() {
-		return allocRAM;
-	}
-
-	public int getAllocROM() {
-		return allocROM;
-	}
-
-	public VMClassloaderInfo getClassloader() {
-		return this;
-	}
-
-	public int getCount() {
-		return getClasses().length;
-	}
-
-	public int getFreeRAM() {
-		return getAllocRAM() - getUsedRAM();
-	}
-
-	public int getFreeROM() {
-		return getAllocROM() - getUsedROM();
-	}
-
-	public String getName() {
-		return id;
-	}
-
-	protected int getTotal(long type, int aspect) {
-		return 0;
-	}
-
-	public int getUsedRAM() {
-		return usedRAM;
-	}
-
-	public int getUsedROM() {
-		return usedROM;
-	}
-
-	protected VMClassInfo[] getClasses() {
-		if (classes == null)
-			initializeClasses();
-		return classes;
-	}
-
-	public VMClassInfo getClass(String name) {
-		return new VMClassInfo(name);
-	}
-
-	public void refresh() {
-		allocRAM = 0;
-		allocROM = 0;
-		usedRAM = 0;
-		usedROM = 0;
-		classes = null;
-	}
-
-	public void initializeClasses() {
-		return;
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/search/FindUnusedMembers.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/search/FindUnusedMembers.java
deleted file mode 100644
index 9380fc7..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/search/FindUnusedMembers.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.search;
-
-import java.io.IOException;
-import java.io.Writer;
-import java.lang.reflect.InvocationTargetException;
-import org.eclipse.core.runtime.*;
-import org.eclipse.jdt.core.*;
-import org.eclipse.jdt.core.search.IJavaSearchConstants;
-import org.eclipse.jdt.core.search.SearchPattern;
-import org.eclipse.jdt.internal.corext.refactoring.RefactoringScopeFactory;
-import org.eclipse.jdt.internal.corext.refactoring.RefactoringSearchEngine;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.ltk.core.refactoring.RefactoringStatus;
-
-/*
- * Class that removes field declarations which aren't referenced.
- */
-public class FindUnusedMembers implements IRunnableWithProgress {
-	private boolean headerWritten = false;
-	private final Writer output;
-
-	ICompilationUnit unit;
-	protected int unusedMemberCount = 0;
-
-	public FindUnusedMembers(ICompilationUnit unit, Writer output) {
-		super();
-		this.unit = unit;
-		this.output = output;
-	}
-
-	private void doSearchCU(ICompilationUnit cu, IProgressMonitor monitor) throws JavaModelException, IOException {
-		IType[] allTypes = cu.getAllTypes();
-		for (int i = 0; i < allTypes.length; i++)
-			doSearchType(allTypes[i], monitor);
-	}
-
-	public void doSearchType(IType type, IProgressMonitor monitor) throws JavaModelException, IOException {
-		headerWritten = false;
-
-		IMethod[] methods = type.getMethods();
-		IField[] fields = type.getFields();
-		monitor.beginTask("Searching for references.", methods.length + fields.length); //$NON-NLS-1$
-		try {
-			for (int i = 0; i < methods.length; i++) {
-				if (monitor.isCanceled())
-					throw new OperationCanceledException();
-				if (hasReferences(methods[i], monitor))
-					continue;
-				writeResult(methods[i]);
-				unusedMemberCount++;
-			}
-			for (int i = 0; i < fields.length; i++) {
-				if (monitor.isCanceled())
-					throw new OperationCanceledException();
-				if (hasReferences(fields[i], monitor))
-					continue;
-				writeResult(fields[i]);
-				unusedMemberCount++;
-			}
-
-			if (monitor.isCanceled())
-				throw new OperationCanceledException();
-		} finally {
-			monitor.done();
-		}
-	}
-
-	public int getUnusedMethodCount() {
-		return unusedMemberCount;
-	}
-
-	private boolean hasReferences(IMember member, IProgressMonitor monitor) throws JavaModelException {
-		ICompilationUnit[] affectedUnits = RefactoringSearchEngine.findAffectedCompilationUnits(SearchPattern.createPattern(member, IJavaSearchConstants.REFERENCES), RefactoringScopeFactory.create(member.getDeclaringType()), new SubProgressMonitor(monitor, 1), new RefactoringStatus());
-		return affectedUnits.length > 0;
-	}
-
-	public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
-		if (monitor == null)
-			monitor = new NullProgressMonitor();
-		try {
-			doSearchCU(unit, monitor);
-		} catch (OperationCanceledException e) {
-			throw new InterruptedException();
-		} catch (JavaModelException e) {
-			throw new InvocationTargetException(e);
-		} catch (IOException e) {
-			throw new InvocationTargetException(e);
-		}
-	}
-
-	private void writeHeader(IType type) throws IOException {
-		if (!headerWritten) {
-			headerWritten = true;
-			output.write("\n\n" + type.getFullyQualifiedName()); //$NON-NLS-1$
-		}
-	}
-
-	private void writeResult(IField field) throws IOException, IllegalArgumentException, JavaModelException {
-		writeHeader(field.getDeclaringType());
-		output.write("\n\t"); //$NON-NLS-1$
-		output.write(Signature.toString(field.getTypeSignature()));
-		output.write(" "); //$NON-NLS-1$
-		output.write(field.getElementName());
-	}
-
-	/**
-	 * @param method
-	 * @throws IOException
-	 * @throws JavaModelException 
-	 * @throws IllegalArgumentException 
-	 */
-	private void writeResult(IMethod method) throws IOException, IllegalArgumentException, JavaModelException {
-		writeHeader(method.getDeclaringType());
-		output.write("\n\t");//$NON-NLS-1$
-		output.write(Signature.toString(method.getReturnType()));
-		output.write(" "); //$NON-NLS-1$
-		output.write(method.getElementName());
-		output.write("("); //$NON-NLS-1$
-		String[] types = method.getParameterTypes();
-		for (int i = 0; i < types.length; i++) {
-			output.write(Signature.toString(types[i]));
-			if (i < types.length - 1)
-				output.write(","); //$NON-NLS-1$
-		}
-		output.write(")"); //$NON-NLS-1$
-	}
-}
diff --git a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/search/FindUnusedMembersAction.java b/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/search/FindUnusedMembersAction.java
deleted file mode 100644
index 21c93b0..0000000
--- a/bundles/org.eclipse.core.tools/src/org/eclipse/core/tools/search/FindUnusedMembersAction.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tools.search;
-
-import java.io.*;
-import java.lang.reflect.InvocationTargetException;
-import java.util.Iterator;
-import org.eclipse.jdt.core.*;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.FileDialog;
-import org.eclipse.ui.*;
-
-public class FindUnusedMembersAction implements IObjectActionDelegate {
-
-	private IStructuredSelection selection;
-	private int unusedCount;
-	private IWorkbenchPart part;
-
-	public void setActivePart(IAction action, IWorkbenchPart part) {
-		this.part = part;
-		//not needed
-	}
-
-	public void run(IAction action) {
-		unusedCount = 0;
-		FileDialog dialog = new FileDialog(part.getSite().getShell(), SWT.SAVE);
-		String outFileName = dialog.open();
-		if (outFileName == null)
-			return;
-		File outputFile = new File(outFileName);
-		if (outputFile.exists())
-			outputFile.delete();
-		FileWriter writer = null;
-		try {
-			try {
-				writer = new FileWriter(outputFile);
-				for (Iterator it = selection.iterator(); it.hasNext();) {
-					Object element = it.next();
-					if (element instanceof IJavaElement)
-						traverse((IJavaElement)element, writer);
-				}
-			} finally {
-				String summary = "\n\nSearch complete.  Found " + unusedCount + " unreferenced methods."; //$NON-NLS-1$ //$NON-NLS-2$
-				if (writer != null) {
-					writer.write(summary);
-					writer.close();
-				}
-				MessageDialog.openInformation(part.getSite().getShell(), "Search Complete", summary);   //$NON-NLS-1$
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	private void traverse(IJavaElement current, Writer output) throws JavaModelException, InvocationTargetException, InterruptedException {
-		if (current instanceof IJavaProject || current instanceof IPackageFragmentRoot) {
-			IJavaElement[] children = ((IParent) current).getChildren();
-			for (int i = 0; i < children.length; i++) {
-				traverse(children[i], output);
-			}
-		} else if (current instanceof IPackageFragment) {
-			//don't search API packages
-			if (current.getElementName().indexOf("internal") > 0) { //$NON-NLS-1$
-				IJavaElement[] children = ((IParent) current).getChildren();
-				for (int i = 0; i < children.length; i++) {
-					traverse(children[i], output);
-				}
-			}
-		} else if (current instanceof ICompilationUnit)
-			traverseCU((ICompilationUnit)current, output);
-	}
-
-	protected void traverseCU(ICompilationUnit unit, Writer output) throws InvocationTargetException, InterruptedException {
-		FindUnusedMembers search = new FindUnusedMembers(unit, output);
-		PlatformUI.getWorkbench().getProgressService().run(true, true, search);
-		unusedCount += search.getUnusedMethodCount();
-	}
-
-	public void selectionChanged(IAction action, ISelection aSelection) {
-		if (aSelection instanceof IStructuredSelection)
-			this.selection = (IStructuredSelection) aSelection;
-	}
-}
\ No newline at end of file
diff --git a/features/org.eclipse.core.tools-feature/.project b/features/org.eclipse.core.tools-feature/.project
deleted file mode 100644
index 9cdfafd..0000000
--- a/features/org.eclipse.core.tools-feature/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.core.tools-feature</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/features/org.eclipse.core.tools-feature/build.properties b/features/org.eclipse.core.tools-feature/build.properties
deleted file mode 100644
index dee3413..0000000
--- a/features/org.eclipse.core.tools-feature/build.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2004, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = feature.xml, license.html, feature.properties, epl-v10.html, *.jpg
-qualifier=context
\ No newline at end of file
diff --git a/features/org.eclipse.core.tools-feature/cpl-v10.html b/features/org.eclipse.core.tools-feature/cpl-v10.html
deleted file mode 100644
index 36aa208..0000000
--- a/features/org.eclipse.core.tools-feature/cpl-v10.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<HTML>
-<HEAD>
-<TITLE>Common Public License - v 1.0</TITLE>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" VLINK="#800000">
-
-
-<P ALIGN="CENTER"><B>Common Public License - v 1.0</B>
-<P><B></B><FONT SIZE="3"></FONT>
-<P><FONT SIZE="3"></FONT><FONT SIZE="2">THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT").  ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.</FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"><B>1.  DEFINITIONS</B></FONT>
-<P><FONT SIZE="2">"Contribution" means:</FONT>
-
-<UL><FONT SIZE="2">a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and<BR CLEAR="LEFT">
-b) in the case of each subsequent Contributor:</FONT></UL>
-
-
-<UL><FONT SIZE="2">i)	 	changes to the Program, and</FONT></UL>
-
-
-<UL><FONT SIZE="2">ii)		additions to the Program;</FONT></UL>
-
-
-<UL><FONT SIZE="2">where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.  </FONT><FONT SIZE="2">A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf.  </FONT><FONT SIZE="2">Contributions do not include additions to the Program which:  (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.  </FONT></UL>
-
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">"Contributor" means any person or entity that distributes the Program.</FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.  </FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2">"Program" means the Contributions distributed in accordance with this Agreement.</FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.</FONT>
-<P><FONT SIZE="2"><B></B></FONT>
-<P><FONT SIZE="2"><B>2.  GRANT OF RIGHTS</B></FONT>
-
-<UL><FONT SIZE="2"></FONT><FONT SIZE="2">a)	</FONT><FONT SIZE="2">Subject to the terms of this Agreement, each Contributor hereby grants</FONT><FONT SIZE="2"> Recipient a non-exclusive, worldwide, royalty-free copyright license to</FONT><FONT SIZE="2" COLOR="#FF0000"> </FONT><FONT SIZE="2">reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.</FONT></UL>
-
-
-<UL><FONT SIZE="2"></FONT></UL>
-
-
-<UL><FONT SIZE="2"></FONT><FONT SIZE="2">b) 	Subject to the terms of this Agreement, each Contributor hereby grants </FONT><FONT SIZE="2">Recipient a non-exclusive, worldwide,</FONT><FONT SIZE="2" COLOR="#008000"> </FONT><FONT SIZE="2">royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form.  This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents.  The patent license shall not apply to any other combinations which include the Contribution.  No hardware per se is licensed hereunder.   </FONT></UL>
-
-
-<UL><FONT SIZE="2"></FONT></UL>
-
-
-<UL><FONT SIZE="2">c)	Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity.  Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise.  As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any.  For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.</FONT></UL>
-
-
-<UL><FONT SIZE="2"></FONT></UL>
-
-
-<UL><FONT SIZE="2">d)	Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. </FONT></UL>
-
-
-<UL><FONT SIZE="2"></FONT></UL>
-
-<P><FONT SIZE="2"><B>3.  REQUIREMENTS</B></FONT>
-<P><FONT SIZE="2"><B></B>A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:</FONT>
-
-<UL><FONT SIZE="2">a)	it complies with the terms and conditions of this Agreement; and</FONT></UL>
-
-
-<UL><FONT SIZE="2">b)	its license agreement:</FONT></UL>
-
-
-<UL><FONT SIZE="2">i)	effectively disclaims</FONT><FONT SIZE="2"> on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; </FONT></UL>
-
-
-<UL><FONT SIZE="2">ii) 	effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; </FONT></UL>
-
-
-<UL><FONT SIZE="2">iii)</FONT><FONT SIZE="2">	states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and</FONT></UL>
-
-
-<UL><FONT SIZE="2">iv)	states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.</FONT><FONT SIZE="2" COLOR="#0000FF"> </FONT><FONT SIZE="2" COLOR="#FF0000"></FONT></UL>
-
-
-<UL><FONT SIZE="2" COLOR="#FF0000"></FONT><FONT SIZE="2"></FONT></UL>
-
-<P><FONT SIZE="2">When the Program is made available in source code form:</FONT>
-
-<UL><FONT SIZE="2">a)	it must be made available under this Agreement; and </FONT></UL>
-
-
-<UL><FONT SIZE="2">b)	a copy of this Agreement must be included with each copy of the Program.  </FONT></UL>
-
-<P><FONT SIZE="2"></FONT><FONT SIZE="2" COLOR="#0000FF"><STRIKE></STRIKE></FONT>
-<P><FONT SIZE="2" COLOR="#0000FF"><STRIKE></STRIKE></FONT><FONT SIZE="2">Contributors may not remove or alter any copyright notices contained within the Program.  </FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.  </FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"><B>4.  COMMERCIAL DISTRIBUTION</B></FONT>
-<P><FONT SIZE="2">Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like.  While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors.   Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering.  The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement.  In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations.  The Indemnified Contributor may participate in any such claim at its own expense.</FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">For example, a Contributor might include the Program in a commercial product offering, Product X.  That Contributor is then a Commercial Contributor.  If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.  Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.</FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2" COLOR="#0000FF"></FONT>
-<P><FONT SIZE="2" COLOR="#0000FF"></FONT><FONT SIZE="2"><B>5.  NO WARRANTY</B></FONT>
-<P><FONT SIZE="2">EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is</FONT><FONT SIZE="2"> solely responsible for determining the appropriateness of using and distributing </FONT><FONT SIZE="2">the Program</FONT><FONT SIZE="2"> and assumes all risks associated with its exercise of rights under this Agreement</FONT><FONT SIZE="2">, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, </FONT><FONT SIZE="2">programs or equipment, and unavailability or interruption of operations</FONT><FONT SIZE="2">.  </FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2"><B>6.  DISCLAIMER OF LIABILITY</B></FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2">EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES </FONT><FONT SIZE="2">(INCLUDING WITHOUT LIMITATION LOST PROFITS),</FONT><FONT SIZE="2"> HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"><B>7.  GENERAL</B></FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2">If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.</FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed.  In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. </FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance.  If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable.  However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.  </FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2">Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted  and may only be modified in the following manner. The Agreement Steward reserves the right to </FONT><FONT SIZE="2">publish new versions (including revisions) of this Agreement from time to </FONT><FONT SIZE="2">time. No one other than the Agreement Steward has the right to modify this Agreement. IBM is the initial Agreement Steward.   IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity.  </FONT><FONT SIZE="2">Each new version of the Agreement will be given a distinguishing version number.  The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new </FONT><FONT SIZE="2">version.  </FONT><FONT SIZE="2">Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, </FONT><FONT SIZE="2">by implication, estoppel or otherwise</FONT><FONT SIZE="2">.</FONT><FONT SIZE="2">  All rights in the Program not expressly granted under this Agreement are reserved.</FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose.  Each party waives its rights to a jury trial in any resulting litigation.</FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT>
-
-</BODY>
-
-</HTML>
\ No newline at end of file
diff --git a/features/org.eclipse.core.tools-feature/eclipse_update_120.jpg b/features/org.eclipse.core.tools-feature/eclipse_update_120.jpg
deleted file mode 100644
index 68e3e02..0000000
--- a/features/org.eclipse.core.tools-feature/eclipse_update_120.jpg
+++ /dev/null
Binary files differ
diff --git a/features/org.eclipse.core.tools-feature/feature.properties b/features/org.eclipse.core.tools-feature/feature.properties
deleted file mode 100644
index b347cab..0000000
--- a/features/org.eclipse.core.tools-feature/feature.properties
+++ /dev/null
@@ -1,123 +0,0 @@
-###############################################################################
-# Copyright (c) 2004 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# feature.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName=Eclipse Core Tools
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse.org
-
-# "updateSiteName" property - label for the update site
-updateSiteName=Eclipse.org update site
-
-# "description" property - description of the feature
-description=Tools for plug-in developers by plug-in developers
-
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-ECLIPSE.ORG SOFTWARE USER AGREEMENT\n\
-14th August, 2003\n\
-\n\
-Usage Of Content\n\
-\n\
-ECLIPSE.ORG MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by Eclipse.org\n\
-is provided to you under the terms and conditions of the Common Public\n\
-License Version 1.0 ("CPL"). A copy of the CPL is provided with this\n\
-Content and is also available at http://www.eclipse.org/legal/cpl-v10.html.\n\
-For purposes of the CPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-Content may be apportioned into plug-ins ("Plug-ins"), plug-in fragments\n\
-("Fragments"), and features ("Features"). A Feature is a bundle of one or\n\
-more Plug-ins and/or Fragments and associated material. Files named\n\
-"feature.xml" may contain a list of the names and version numbers of the\n\
-Plug-ins and/or Fragments associated with a Feature. Plug-ins and Fragments\n\
-are located in directories named "plugins" and Features are located in\n\
-directories named "features".\n\
-\n\
-Features may also include other Features ("Included Features"). Files named\n\
-"feature.xml" may contain a list of the names and version numbers of\n\
-Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-   - The top-level (root) directory\n\
-   - Plug-in and Fragment directories\n\
-   - Subdirectories of the directory named "src" of certain Plug-ins\n\
-   - Feature directories\n\
-\n\
-Note: if a Feature made available by Eclipse.org is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties". Such Abouts,\n\
-Feature Licenses and Feature Update Licenses contain the terms and\n\
-conditions (or references to such terms and conditions) that govern your\n\
-use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE CPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-    - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-    - IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-    - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-    - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
-is provided, please contact Eclipse.org to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use,\n\
-and re-export of encryption software, to see if this is permitted.\n
-########### end of license property ##########################################
diff --git a/features/org.eclipse.core.tools-feature/feature.xml b/features/org.eclipse.core.tools-feature/feature.xml
deleted file mode 100644
index f30b0d0..0000000
--- a/features/org.eclipse.core.tools-feature/feature.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.core.tools"
-      label="%featureName"
-      version="1.3.0.qualifier"
-      provider-name="%providerName"
-      image="eclipse_update_120.jpg">
-
-   <description>
-      %description
-   </description>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <url>
-      <update label="%updateSiteName" url="http://update.eclipse.org/updates"/>
-   </url>
-
-   <plugin
-         id="org.eclipse.core.tools"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.core.tools.resources"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.core.resources.spysupport"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-</feature>
diff --git a/features/org.eclipse.core.tools-feature/license.html b/features/org.eclipse.core.tools-feature/license.html
deleted file mode 100644
index af8c380..0000000
--- a/features/org.eclipse.core.tools-feature/license.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<title>Eclipse.org Software User Agreement</title>
-</head>
-
-<body lang="EN-US" link=blue vlink=purple>
-<h2>Eclipse.org Software User Agreement</h2>
-<p>14th August, 2003</p>
-
-<h3>Usage Of Content</h3>
-
-<p>ECLIPSE.ORG MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
-<p>Unless otherwise indicated, all Content made available by Eclipse.org is provided to you under the terms and conditions of the Common Public License Version 1.0
-   (&quot;CPL&quot;).  A copy of the CPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>.
-   For purposes of the CPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<p>Content may be apportioned into plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;). A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Files named &quot;feature.xml&quot; may contain a list of the names and version numbers of  the Plug-ins and/or Fragments associated with a Feature.   Plug-ins and Fragments are located in directories
-   named &quot;plugins&quot; and Features are located in directories named &quot;features&quot;.</p>
-  
-<p>Features may also include other Features (&quot;Included Features&quot;). Files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</p>
-  
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Subdirectories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
-</ul>
-		
-<p>Note: if a Feature made available by Eclipse.org is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them. Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot;.
-Such Abouts, Feature Licenses and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER TO THE CPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License or Feature Update License is provided, please
-contact Eclipse.org to determine what terms and conditions govern that particular Content.</p>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/tests/org.eclipse.core.expressions.tests/.classpath b/tests/org.eclipse.core.expressions.tests/.classpath
deleted file mode 100644
index 065ac06..0000000
--- a/tests/org.eclipse.core.expressions.tests/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/tests/org.eclipse.core.expressions.tests/.cvsignore b/tests/org.eclipse.core.expressions.tests/.cvsignore
deleted file mode 100644
index fe99505..0000000
--- a/tests/org.eclipse.core.expressions.tests/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-bin
-
diff --git a/tests/org.eclipse.core.expressions.tests/.project b/tests/org.eclipse.core.expressions.tests/.project
deleted file mode 100644
index 17924fb..0000000
--- a/tests/org.eclipse.core.expressions.tests/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.core.expressions.tests</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/tests/org.eclipse.core.expressions.tests/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.core.expressions.tests/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 1a03ea5..0000000
--- a/tests/org.eclipse.core.expressions.tests/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,66 +0,0 @@
-#Wed May 25 10:22:57 CEST 2005

-eclipse.preferences.version=1

-org.eclipse.jdt.core.builder.cleanOutputFolder=clean

-org.eclipse.jdt.core.builder.duplicateResourceTask=warning

-org.eclipse.jdt.core.builder.invalidClasspath=abort

-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch

-org.eclipse.jdt.core.circularClasspath=error

-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled

-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled

-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled

-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2

-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve

-org.eclipse.jdt.core.compiler.compliance=1.4

-org.eclipse.jdt.core.compiler.debug.lineNumber=generate

-org.eclipse.jdt.core.compiler.debug.localVariable=generate

-org.eclipse.jdt.core.compiler.debug.sourceFile=generate

-org.eclipse.jdt.core.compiler.doc.comment.support=enabled

-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100

-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning

-org.eclipse.jdt.core.compiler.problem.deprecation=warning

-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled

-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled

-org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore

-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning

-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning

-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore

-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning

-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error

-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=error

-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=error

-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning

-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning

-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private

-org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning

-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error

-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore

-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled

-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public

-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning

-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled

-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private

-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning

-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error

-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error

-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore

-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=error

-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error

-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled

-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error

-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore

-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore

-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning

-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error

-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore

-org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled

-org.eclipse.jdt.core.compiler.problem.unusedImport=error

-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning

-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore

-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled

-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled

-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning

-org.eclipse.jdt.core.compiler.source=1.3

-org.eclipse.jdt.core.incompatibleJDKLevel=ignore

-org.eclipse.jdt.core.incompleteClasspath=error

diff --git a/tests/org.eclipse.core.expressions.tests/.settings/org.eclipse.jdt.ui.prefs b/tests/org.eclipse.core.expressions.tests/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index cfb1bbf..0000000
--- a/tests/org.eclipse.core.expressions.tests/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,5 +0,0 @@
-#Tue Dec 21 11:19:34 CET 2004
-eclipse.preferences.version=1
-org.eclipse.jdt.ui.ondemandthreshold=99
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;junit;org.eclipse.core.runtime;org.eclipse.core.expressions;org.eclipse.core.internal.expressions;org.eclipse.core.internal.expressions.tests;
diff --git a/tests/org.eclipse.core.expressions.tests/.template b/tests/org.eclipse.core.expressions.tests/.template
deleted file mode 100644
index f3bcd41..0000000
--- a/tests/org.eclipse.core.expressions.tests/.template
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<form>

-   <p/><p><b>Tips on working with this plug-in project</b></p><li>For the view of the new plug-in at a glance, go to the <img href="pageImage"/><a href="OverviewPage">Overview</a>.</li><li>You can test the contributions of this plug-in by launching another instance of the workbench. On the <b>Run</b> menu, click <b>Run As</b> and choose <img href="runTimeWorkbenchImage"/><a href="action.run">Run-time Workbench</a> from the available choices.</li><li>You can add more functionality to this plug-in by adding extensions using the <a href="action.newExtension">New Extension Wizard</a>.</li><li>The plug-in project contains Java code that you can debug. Place breakpoints in Java classes. On the <b>Run</b> menu, select <b>Debug As</b> and choose <img href="runTimeWorkbenchImage"/><a href="action.debug">Run-time Workbench</a> from the available choices.</li>

-</form>

diff --git a/tests/org.eclipse.core.expressions.tests/about.html b/tests/org.eclipse.core.expressions.tests/about.html
deleted file mode 100644
index 6f6b96c..0000000
--- a/tests/org.eclipse.core.expressions.tests/about.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<title>About</title>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/tests/org.eclipse.core.expressions.tests/build.properties b/tests/org.eclipse.core.expressions.tests/build.properties
deleted file mode 100644
index 2bbc77d..0000000
--- a/tests/org.eclipse.core.expressions.tests/build.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2004 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = plugin.xml,\
-               test.xml,\
-               about.html,\
-               plugin.properties,\
-               *.jar
-src.includes = about.html
-source.expressionstests.jar = src/
diff --git a/tests/org.eclipse.core.expressions.tests/plugin.properties b/tests/org.eclipse.core.expressions.tests/plugin.properties
deleted file mode 100644
index 42c9f22..0000000
--- a/tests/org.eclipse.core.expressions.tests/plugin.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2004 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-pluginName= Expression Language Tests
-providerName= Eclipse.org
-
-testParticipant= Test Participant
diff --git a/tests/org.eclipse.core.expressions.tests/plugin.xml b/tests/org.eclipse.core.expressions.tests/plugin.xml
deleted file mode 100644
index 6c8d337..0000000
--- a/tests/org.eclipse.core.expressions.tests/plugin.xml
+++ /dev/null
@@ -1,170 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin
-   id="org.eclipse.core.expressions.tests"
-   name="%pluginName"
-   version="3.2.0.qualifier"
-   provider-name="%providerName"
-   class="org.eclipse.core.internal.expressions.tests.ExpressionTestPlugin">
-
-   <runtime>
-      <library name="expressionstests.jar">
-         <export name="*"/>
-      </library>
-   </runtime>
-
-   <requires>
-      <import plugin="org.junit"/>
-   	  <import plugin="org.eclipse.core.runtime"/>
-   	  <import plugin="org.eclipse.core.expressions"/>
-   </requires>
-
-   <extension point="org.eclipse.core.expressions.propertyTesters">
-      <propertyTester
-            namespace="org.eclipse.core.internal.expressions.tests"
-            properties="simple, overridden, ordering, chainOrdering"
-            type="org.eclipse.core.internal.expressions.tests.A"
-            class="org.eclipse.core.internal.expressions.tests.A_TypeExtender"
-            id="org.eclipse.core.internal.expressions.tests.A_TypeExtender">
-      </propertyTester>
-      <propertyTester
-            namespace="org.eclipse.core.internal.expressions.tests"
-            properties="chaining, chainOrdering"
-            type="org.eclipse.core.internal.expressions.tests.A"
-            class="org.eclipse.core.internal.expressions.tests.A_TypeExtender2"
-            id="org.eclipse.core.internal.expressions.tests.A_TypeExtender2">
-      </propertyTester>
-      <propertyTester
-            namespace="org.eclipse.core.internal.expressions.tests"
-            properties="overridden"
-            type="org.eclipse.core.internal.expressions.tests.B"
-            class="org.eclipse.core.internal.expressions.tests.B_TypeExtender"
-            id="org.eclipse.core.internal.expressions.tests.B_TypeExtender">
-      </propertyTester>
-      <propertyTester
-            namespace="org.eclipse.core.internal.expressions.tests"
-            properties="ordering"
-            type="org.eclipse.core.internal.expressions.tests.I"
-            class="org.eclipse.core.internal.expressions.tests.I_TypeExtender"
-            id="org.eclipse.core.internal.expressions.tests.I_TypeExtender">
-      </propertyTester>
-      
-      <propertyTester
-            namespace="org.eclipse.core.internal.expressions.tests2"
-            properties="differentNamespace"
-            type="org.eclipse.core.internal.expressions.tests.A"
-            class="org.eclipse.core.internal.expressions.tests.A_TypeExtender3"
-            id="org.eclipse.core.internal.expressions.tests.A_TypeExtender">
-      </propertyTester>
-   </extension>
-
-   <extension point="org.eclipse.core.runtime.adapters">
-		<factory 
-            class="org.eclipse.core.internal.expressions.tests.TestAdapterFactory" 
-            adaptableType="org.eclipse.core.internal.expressions.tests.Adaptee">
-            <adapter type="org.eclipse.core.internal.expressions.tests.Adapter"/>
-		</factory>
-   </extension>
-   
-   <extension-point id="testParticipants" name="%testParticipant" schema="schema/testParticipants.exsd"/>
-   
-	<extension point="org.eclipse.core.expressions.tests.testParticipants">
-	  <testParticipant id="test1">
-		<enablement>
-			<and>
-	            <and/> 
-	            <or/>
-	            <not><count value="1"/></not>
-	            <instanceof value="org.eclipse.core.expressions.Expression"/>
-	            <test property="namespace.isDefault"/>
-	            <systemTest property="isDefault" value="xx"/>
-	            <equals value= "string"/>
-				<count value="1"/>
-				<with variable="eclipse"/>
-				<resolve variable="eclipse"/>
-			    <adapt type="org.eclipse.core.expressions.Expression"/>            
-	            <iterate/> 
-			</and>
-			<or>
-	            <and/> 
-	            <or/>
-	            <not><count value="1"/></not>
-	            <instanceof value="org.eclipse.core.expressions.Expression"/>
-	            <test property="namespace.isDefault"/>
-	            <systemTest property="isDefault" value="xx"/>
-	            <equals value= "string"/>
-				<count value="1"/>
-				<with variable="eclipse"/>
-				<resolve variable="eclipse"/>
-			    <adapt type="org.eclipse.core.expressions.Expression"/>            
-	            <iterate/> 
-			</or> 
-			<not><count value="1"/></not>
-            <instanceof value="org.eclipse.core.expressions.Expression"/>
-            <test property="namespace.isDefault"/>
-            <test property="namespace.isDefault" value="default"/>
-            <test property="namespace.isDefault" args="'arg1', 'arg2'" value="default"/>
-	        <systemTest property="isDefault" value="xx"/>
-	        <equals value= "string"/>
-            <count value="1"/>
-            <with variable= "element">
-	            <and/> 
-	            <or/>
-	            <not><count value="1"/></not>
-	            <instanceof value="org.eclipse.core.expressions.Expression"/>
-	            <test property="namespace.isDefault"/>
-	            <systemTest property="isDefault" value="xx"/>
-	            <equals value= "string"/>
-				<count value="1"/>
-				<with variable="eclipse"/>
-				<resolve variable="eclipse"/>
-			    <adapt type="org.eclipse.core.expressions.Expression"/>            
-	            <iterate/> 
-            </with>
-            <resolve variable="eclipse">
-	            <and/> 
-	            <or/>
-	            <not><count value="1"/></not>
-	            <instanceof value="org.eclipse.core.expressions.Expression"/>
-	            <test property="namespace.isDefault"/>
-	            <systemTest property="isDefault" value="xx"/>
-	            <equals value= "string"/>
-				<count value="1"/>
-				<with variable="eclipse"/>
-				<resolve variable="eclipse"/>
-			    <adapt type="org.eclipse.core.expressions.Expression"/>            
-	            <iterate/> 
-            </resolve>
-            <resolve variable="eclipse" args="1, true"/>
-            <adapt type="org.eclipse.core.expressions.Expression">
-	            <and/> 
-	            <or/>
-	            <not><count value="1"/></not>
-	            <instanceof value="org.eclipse.core.expressions.Expression"/>
-	            <test property="namespace.isDefault"/>
-	            <systemTest property="isDefault" value="xx"/>
-	            <equals value= "string"/>
-				<count value="1"/>
-				<with variable="eclipse"/>
-				<resolve variable="eclipse"/>
-			    <adapt type="org.eclipse.core.expressions.Expression"/>            
-	            <iterate/> 
-            </adapt>
-            <iterate>
-	            <and/> 
-	            <or/>
-	            <not><count value="1"/></not>
-	            <instanceof value="org.eclipse.core.expressions.Expression"/>
-	            <test property="namespace.isDefault"/>
-	            <systemTest property="isDefault" value="xx"/>
-	            <equals value= "string"/>
-				<count value="1"/>
-				<with variable="eclipse"/>
-				<resolve variable="eclipse"/>
-			    <adapt type="org.eclipse.core.expressions.Expression"/>            
-	            <iterate/> 
-            </iterate>
-      </enablement>
-     </testParticipant>
-   </extension>
-</plugin>
diff --git a/tests/org.eclipse.core.expressions.tests/schema/testParticipants.exsd b/tests/org.eclipse.core.expressions.tests/schema/testParticipants.exsd
deleted file mode 100644
index 4c03369..0000000
--- a/tests/org.eclipse.core.expressions.tests/schema/testParticipants.exsd
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>

-<!-- Schema file written by PDE -->

-<schema targetNamespace="ore.eclipse.core.expressions">

-<annotation>

-      <appInfo>

-         <meta.schema plugin="ore.eclipse.core.expressions" id="testParticipants" name="Test Participants"/>

-      </appInfo>

-      <documentation>

-         This extension point is used to test the expression language.

-      </documentation>

-   </annotation>

-

-   <include schemaLocation="schema://org.eclipse.core.expressions/schema/expressionLanguage.exsd"/>

-

-   <element name="extension">

-      <complexType>

-         <sequence>

-            <element ref="testParticipant" minOccurs="0" maxOccurs="unbounded"/>

-         </sequence>

-         <attribute name="point" type="string" use="required">

-            <annotation>

-               <documentation>

-                  a fully qualified identifier of the target extension point

-               </documentation>

-            </annotation>

-         </attribute>

-         <attribute name="id" type="string">

-            <annotation>

-               <documentation>

-                  an optional identifier of the extension instance

-               </documentation>

-            </annotation>

-         </attribute>

-         <attribute name="name" type="string">

-            <annotation>

-               <documentation>

-                  an optional name of the extension instance

-               </documentation>

-               <appInfo>

-                  <meta.attribute translatable="true"/>

-               </appInfo>

-            </annotation>

-         </attribute>

-      </complexType>

-   </element>

-

-   <element name="testParticipant">

-      <complexType>

-         <all>

-            <element ref="enablement"/>

-         </all>

-         <attribute name="id" type="string" use="required">

-            <annotation>

-               <documentation>

-                  

-               </documentation>

-            </annotation>

-         </attribute>

-      </complexType>

-   </element>

-

-   <annotation>

-      <appInfo>

-         <meta.section type="examples"/>

-      </appInfo>

-      <documentation>

-         

-      </documentation>

-   </annotation>

-

-   <annotation>

-      <appInfo>

-         <meta.section type="apiInfo"/>

-      </appInfo>

-      <documentation>

-         

-      </documentation>

-   </annotation>

-

-   <annotation>

-      <appInfo>

-         <meta.section type="implementation"/>

-      </appInfo>

-      <documentation>

-         

-      </documentation>

-   </annotation>

-

-   <annotation>

-      <appInfo>

-         <meta.section type="copyright"/>

-      </appInfo>

-      <documentation>

-         Copyright (c) 2001, 2004 IBM Corporation and others.&lt;br&gt;

-All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at &lt;a href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;

-      </documentation>

-   </annotation>

-

-</schema>

diff --git a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/A.java b/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/A.java
deleted file mode 100644
index fa503b1..0000000
--- a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/A.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions.tests;
-
-
-public class A {
-
-}
diff --git a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/A_TypeExtender.java b/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/A_TypeExtender.java
deleted file mode 100644
index 4dd7260..0000000
--- a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/A_TypeExtender.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions.tests;
-
-import org.eclipse.core.expressions.PropertyTester;
-import org.eclipse.core.internal.expressions.Assert;
-
-public class A_TypeExtender extends PropertyTester {
-
-	public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
-		if ("simple".equals(property)) { //$NON-NLS-1$
-			return "simple".equals(expectedValue); //$NON-NLS-1$
-		} else if ("overridden".equals(property)) { //$NON-NLS-1$
-			return "A".equals(expectedValue); //$NON-NLS-1$
-		} else if ("ordering".equals(property)) { //$NON-NLS-1$
-			return "A".equals(expectedValue); //$NON-NLS-1$
-		} else if ("chainOrdering".equals(property)) { //$NON-NLS-1$
-			return "A".equals(expectedValue); //$NON-NLS-1$
-		}
-		Assert.isTrue(false);
-		return false;
-	}
-}
diff --git a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/A_TypeExtender2.java b/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/A_TypeExtender2.java
deleted file mode 100644
index b170dd2..0000000
--- a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/A_TypeExtender2.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions.tests;
-
-import org.eclipse.core.expressions.PropertyTester;
-import org.eclipse.core.internal.expressions.Assert;
-
-public class A_TypeExtender2 extends PropertyTester {
-
-	public boolean test(Object receiver, String method, Object[] args, Object expectedValue) {
-		if ("chaining".equals(method)) { //$NON-NLS-1$
-			return "A2".equals(expectedValue); //$NON-NLS-1$
-		} else if ("chainOrdering".equals(method)) { //$NON-NLS-1$
-			return "A2".equals(expectedValue); //$NON-NLS-1$
-		}
-		Assert.isTrue(false);
-		return false;
-	}
-
-}
diff --git a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/A_TypeExtender3.java b/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/A_TypeExtender3.java
deleted file mode 100644
index ad56ffa..0000000
--- a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/A_TypeExtender3.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions.tests;
-
-import org.eclipse.core.expressions.PropertyTester;
-import org.eclipse.core.internal.expressions.Assert;
-
-public class A_TypeExtender3 extends PropertyTester {
-
-	public boolean test(Object receiver, String method, Object[] args, Object expectedValue) {
-		if ("differentNamespace".equals(method)) { //$NON-NLS-1$
-			return "A3".equals(expectedValue); //$NON-NLS-1$
-		}
-		Assert.isTrue(false);
-		return false;
-	}
-
-}
diff --git a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/Adaptee.java b/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/Adaptee.java
deleted file mode 100644
index b93091a..0000000
--- a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/Adaptee.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions.tests;
-
-
-public class Adaptee {
-
-}
diff --git a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/Adapter.java b/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/Adapter.java
deleted file mode 100644
index aafc357..0000000
--- a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/Adapter.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions.tests;
-
-
-public class Adapter {
-
-}
diff --git a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/AllTests.java b/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/AllTests.java
deleted file mode 100644
index bfc20b4..0000000
--- a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/AllTests.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions.tests;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class AllTests {
-	
-	public static Test suite() {
-		TestSuite suite= new TestSuite("All Expression Language Tests"); //$NON-NLS-1$
-		suite.addTest(PropertyTesterTests.suite());
-		suite.addTest(ExpressionTests.suite());
-		suite.addTest(ExpressionInfoTests.suite());
-		return suite;
-	}
-}
-
diff --git a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/B.java b/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/B.java
deleted file mode 100644
index d25c19d..0000000
--- a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/B.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions.tests;
-
-
-public class B extends A implements I {
-
-}
diff --git a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/B_TypeExtender.java b/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/B_TypeExtender.java
deleted file mode 100644
index e33334b..0000000
--- a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/B_TypeExtender.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions.tests;
-
-import org.eclipse.core.expressions.PropertyTester;
-import org.eclipse.core.internal.expressions.Assert;
-
-public class B_TypeExtender extends PropertyTester {
-
-	public boolean test(Object receiver, String method, Object[] args, Object expectedValue) {
-		if ("overridden".equals(method)) { //$NON-NLS-1$
-			return "B".equals(expectedValue); //$NON-NLS-1$
-		}
-		Assert.isTrue(false);
-		return false;
-	}
-}
diff --git a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/ExpressionInfoTests.java b/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/ExpressionInfoTests.java
deleted file mode 100644
index b2231c5..0000000
--- a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/ExpressionInfoTests.java
+++ /dev/null
@@ -1,264 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions.tests;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import org.eclipse.core.expressions.ExpressionInfo;
-
-import org.eclipse.core.internal.expressions.AdaptExpression;
-import org.eclipse.core.internal.expressions.AndExpression;
-import org.eclipse.core.internal.expressions.CountExpression;
-import org.eclipse.core.internal.expressions.EqualsExpression;
-import org.eclipse.core.internal.expressions.InstanceofExpression;
-import org.eclipse.core.internal.expressions.IterateExpression;
-import org.eclipse.core.internal.expressions.NotExpression;
-import org.eclipse.core.internal.expressions.ResolveExpression;
-import org.eclipse.core.internal.expressions.SystemTestExpression;
-import org.eclipse.core.internal.expressions.TestExpression;
-import org.eclipse.core.internal.expressions.WithExpression;
-
-
-public class ExpressionInfoTests extends TestCase {
-
-	public static Test suite() {
-		return new TestSuite(ExpressionInfoTests.class);
-	}
-
-	// ---- test merging ------------------------------------------------------------------------
-	
-	public void testMergeEmpty() {
-		ExpressionInfo info= new ExpressionInfo();
-		info.merge(new ExpressionInfo());
-		assertNoAccess(info);
-	}
-	
-	public void testMergeDefaultVariable() {
-		ExpressionInfo info;
-		ExpressionInfo other;
-		
-		info= new ExpressionInfo();
-		info.markDefaultVariableAccessed();
-		info.merge(new ExpressionInfo());
-		assertDefaultAccessOnly(info);
-		
-		info= new ExpressionInfo();
-		other= new ExpressionInfo();
-		other.markDefaultVariableAccessed();
-		info.merge(other);
-		assertDefaultAccessOnly(info);
-		
-		info= new ExpressionInfo();
-		other= new ExpressionInfo();
-		info.markDefaultVariableAccessed();
-		other.markDefaultVariableAccessed();
-		info.merge(other);
-		assertDefaultAccessOnly(info);
-	}
-	
-	public void testMergeSystemProperty() {
-		ExpressionInfo info;
-		ExpressionInfo other;
-		
-		info= new ExpressionInfo();
-		info.markSystemPropertyAccessed();
-		info.merge(new ExpressionInfo());
-		assertSystemPropertyOnly(info);
-		
-		info= new ExpressionInfo();
-		other= new ExpressionInfo();
-		other.markSystemPropertyAccessed();
-		info.merge(other);
-		assertSystemPropertyOnly(info);
-		
-		info= new ExpressionInfo();
-		other= new ExpressionInfo();
-		info.markSystemPropertyAccessed();
-		other.markSystemPropertyAccessed();
-		info.merge(other);
-		assertSystemPropertyOnly(info);
-	}
-	
-	public void testMergeVariableNames() {
-		ExpressionInfo info;
-		ExpressionInfo other;
-		
-		info= new ExpressionInfo();
-		info.addVariableNameAccess("variable");
-		info.merge(new ExpressionInfo());
-		assertVariableAccess(info, "variable");
-		
-		info= new ExpressionInfo();
-		other= new ExpressionInfo();
-		other.addVariableNameAccess("variable");
-		info.merge(other);
-		assertVariableAccess(info, "variable");
-		
-		info= new ExpressionInfo();
-		info.addVariableNameAccess("variable");
-		other= new ExpressionInfo();
-		other.addVariableNameAccess("variable");
-		info.merge(other);
-		assertVariableAccess(info, "variable");
-		
-		info= new ExpressionInfo();
-		info.addVariableNameAccess("variable_one");
-		other= new ExpressionInfo();
-		other.addVariableNameAccess("variable_two");
-		info.merge(other);
-		assertVariableAccess(info, new String[] {"variable_one", "variable_two"});
-	}
-	
-	public void testMergeMisbehavingExpressionTypes() {
-		ExpressionInfo info;
-		ExpressionInfo other;
-		
-		info= new ExpressionInfo();
-		info.addMisBehavingExpressionType(WithExpression.class);
-		info.merge(new ExpressionInfo());
-		assertMisbehavedExpressionTypes(info, new Class[] {WithExpression.class});
-		
-		info= new ExpressionInfo();
-		other= new ExpressionInfo();
-		other.addMisBehavingExpressionType(WithExpression.class);
-		info.merge(other);
-		assertMisbehavedExpressionTypes(info, new Class[] {WithExpression.class});
-		
-		info= new ExpressionInfo();
-		info.addMisBehavingExpressionType(WithExpression.class);
-		other= new ExpressionInfo();
-		other.addMisBehavingExpressionType(WithExpression.class);
-		info.merge(other);
-		assertMisbehavedExpressionTypes(info, new Class[] {WithExpression.class});
-		
-		info= new ExpressionInfo();
-		info.addMisBehavingExpressionType(WithExpression.class);
-		other= new ExpressionInfo();
-		other.addMisBehavingExpressionType(ResolveExpression.class);
-		info.merge(other);
-		assertMisbehavedExpressionTypes(info, new Class[] {WithExpression.class, ResolveExpression.class});
-	}
-	
-	// ---- test expression ---------------------------------------------------------------------
-	
-	public void testCountExpression() {
-		assertDefaultAccessOnly((new CountExpression("10")).computeExpressionInfo());
-	}
-
-	public void testEqualsExpression() {
-		assertDefaultAccessOnly((new EqualsExpression(new Object())).computeExpressionInfo());
-	}
-	
-	public void testInstanceofExpression() {
-		assertDefaultAccessOnly((new InstanceofExpression("java.lang.Object")).computeExpressionInfo());
-	}
-	
-	public void testNotExpression() {
-		assertDefaultAccessOnly((new NotExpression(new CountExpression("10"))).computeExpressionInfo());
-	}
-	
-	public void testSystemExpression() {
-		assertSystemPropertyOnly((new SystemTestExpression("property", "value")).computeExpressionInfo());
-	}
-	
-	public void testTestExpression() {
-		assertDefaultAccessOnly((new TestExpression("namespace", "property", null, new Object())).computeExpressionInfo());
-	}
-	
-	// ---- composite expressions ---------------------------------------------------------
-	
-	public void testAdaptExpression() throws Exception {
-		assertDefaultAccessOnly(new AdaptExpression("java.lang.Object").computeExpressionInfo());
-	}
-	
-	public void testAndExpression() throws Exception {
-		AndExpression and= new AndExpression();
-		assertNoAccess(and.computeExpressionInfo());
-		and.add(new CountExpression("10"));
-		assertDefaultAccessOnly(and.computeExpressionInfo());
-	}
-	
-	public void testIterateExpression() throws Exception {
-		assertDefaultAccessOnly(new IterateExpression("or").computeExpressionInfo());
-	}
-	
-	public void testResolveExpression() {
-		ResolveExpression resolve= new ResolveExpression("variable", null);
-		assertNoAccess(resolve.computeExpressionInfo());
-		resolve.add(new CountExpression("10"));
-		assertVariableAccess(resolve.computeExpressionInfo(), "variable");
-	}
-	
-	public void testWithExpression() {
-		WithExpression with= new WithExpression("variable");
-		assertNoAccess(with.computeExpressionInfo());
-		with.add(new CountExpression("10"));
-		assertVariableAccess(with.computeExpressionInfo(), "variable");
-	}
-	
-	private void assertDefaultAccessOnly(ExpressionInfo info) {
-		assertTrue("Accesses default variable", info.hasDefaultVariableAccess());
-		assertFalse("Doesn't accesses system property", info.hasSystemPropertyAccess());
-		assertTrue("No variable accesses", info.getAccessedVariableNames().length == 0);
-		assertNull("No misbehaving expression types", info.getMisbehavingExpressionTypes());
-	}
-
-	private void assertSystemPropertyOnly(ExpressionInfo info) {
-		assertFalse("Doesn't accesses default variable", info.hasDefaultVariableAccess());
-		assertTrue("Accesses system property", info.hasSystemPropertyAccess());
-		assertTrue("No variable accesses", info.getAccessedVariableNames().length == 0);
-		assertNull("No misbehaving expression types", info.getMisbehavingExpressionTypes());
-	}
-	
-	private void assertNoAccess(ExpressionInfo info) {
-		assertFalse("Doesn't accesses default variable", info.hasDefaultVariableAccess());
-		assertFalse("Doesn't accesses system property", info.hasSystemPropertyAccess());
-		assertTrue("No variable accesses", info.getAccessedVariableNames().length == 0);
-		assertNull("No misbehaving expression types", info.getMisbehavingExpressionTypes());
-	}
-	
-	private void assertVariableAccess(ExpressionInfo info, String variable) {
-		assertFalse("Doesn't accesses default variable", info.hasDefaultVariableAccess());
-		assertFalse("Doesn't accesses system property", info.hasSystemPropertyAccess());
-		String[] accessedVariableNames= info.getAccessedVariableNames();
-		assertEquals("One variable accessed", 1, accessedVariableNames.length);
-		assertEquals("Variable accessed", variable, accessedVariableNames[0]);
-		assertNull("No misbehaving expression types", info.getMisbehavingExpressionTypes());
-	}
-	
-	private void assertVariableAccess(ExpressionInfo info, String[] variables) {
-		assertFalse("Doesn't accesses default variable", info.hasDefaultVariableAccess());
-		assertFalse("Doesn't accesses system property", info.hasSystemPropertyAccess());
-		Set accessedVariableNames= new HashSet(Arrays.asList(info.getAccessedVariableNames()));
-		assertEquals("All variable accessed", variables.length, accessedVariableNames.size());
-		for (int i= 0; i < variables.length; i++) {
-			assertTrue("Variable accessed", accessedVariableNames.contains(variables[i]));
-		}
-		assertNull("No misbehaving expression types", info.getMisbehavingExpressionTypes());
-	}
-	
-	private void assertMisbehavedExpressionTypes(ExpressionInfo info, Class[] types) {
-		assertFalse("Doesn't accesses default variable", info.hasDefaultVariableAccess());
-		assertFalse("Doesn't accesses system property", info.hasSystemPropertyAccess());
-		assertTrue("No variable accesses", info.getAccessedVariableNames().length == 0);
-		Set misbehavedTypes= new HashSet(Arrays.asList(info.getMisbehavingExpressionTypes()));
-		assertEquals("All types accessed", types.length, misbehavedTypes.size());
-		for (int i= 0; i < types.length; i++) {
-			assertTrue("Type collected", misbehavedTypes.contains(types[i]));
-		}
-	}
-}
\ No newline at end of file
diff --git a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/ExpressionTestPlugin.java b/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/ExpressionTestPlugin.java
deleted file mode 100644
index 2b17c28..0000000
--- a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/ExpressionTestPlugin.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions.tests;
-
-import org.eclipse.core.runtime.Plugin;
-
-public class ExpressionTestPlugin extends Plugin {
-	
-	private static ExpressionTestPlugin fgDefault;
-	
-	public ExpressionTestPlugin() {
-		fgDefault= this;
-	}
-
-	public static ExpressionTestPlugin getDefault() {
-		return fgDefault;
-	}
-	
-	public static String getPluginId() {
-		return "org.eclipse.core.expressions.tests"; //$NON-NLS-1$
-	}
-}
diff --git a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/ExpressionTests.java b/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/ExpressionTests.java
deleted file mode 100644
index f967f24..0000000
--- a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/ExpressionTests.java
+++ /dev/null
@@ -1,401 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions.tests;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.Platform;
-
-import org.eclipse.core.expressions.EvaluationContext;
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionConverter;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.expressions.IVariableResolver;
-import org.eclipse.core.internal.expressions.AdaptExpression;
-import org.eclipse.core.internal.expressions.CountExpression;
-import org.eclipse.core.internal.expressions.EqualsExpression;
-import org.eclipse.core.internal.expressions.Expressions;
-import org.eclipse.core.internal.expressions.InstanceofExpression;
-import org.eclipse.core.internal.expressions.IterateExpression;
-import org.eclipse.core.internal.expressions.SystemTestExpression;
-
-
-public class ExpressionTests extends TestCase {
-
-	public static Test suite() {
-		return new TestSuite(ExpressionTests.class);
-	}
-	
-	public void testEscape() throws Exception {
-		assertEquals("Str'ing", Expressions.unEscapeString("Str''ing")); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("'", Expressions.unEscapeString("''")); //$NON-NLS-1$ //$NON-NLS-2$
-		boolean caught= false;
-		try {
-			Expressions.unEscapeString("'"); //$NON-NLS-1$
-		} catch (CoreException e) {
-			caught= true;
-		}
-		assertTrue(caught);
-	}
-	
-	public void testArgumentConversion() throws Exception {
-		assertNull(Expressions.convertArgument(null));
-		assertEquals("", Expressions.convertArgument("")); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("", Expressions.convertArgument("''")); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("eclipse", Expressions.convertArgument("eclipse")); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("e'clips'e", Expressions.convertArgument("e'clips'e")); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("eclipse", Expressions.convertArgument("'eclipse'")); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("'ecl'ipse'", Expressions.convertArgument("'''ecl''ipse'''")); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("true", Expressions.convertArgument("'true'")); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("1.7", Expressions.convertArgument("'1.7'")); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("007", Expressions.convertArgument("'007'")); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals(Boolean.TRUE, Expressions.convertArgument("true")); //$NON-NLS-1$
-		assertEquals(Boolean.FALSE, Expressions.convertArgument("false")); //$NON-NLS-1$
-		assertEquals(new Integer(100), Expressions.convertArgument("100")); //$NON-NLS-1$
-		assertEquals(new Float(1.7f), Expressions.convertArgument("1.7")); //$NON-NLS-1$
-	}
-	
-	public void testArgumentParsing() throws Exception {
-		Object[] result= null;
-		
-		result= Expressions.parseArguments(""); //$NON-NLS-1$
-		assertEquals("", result[0]); //$NON-NLS-1$
-		
-		result= Expressions.parseArguments("s1"); //$NON-NLS-1$
-		assertEquals("s1", result[0]); //$NON-NLS-1$
-		
-		result= Expressions.parseArguments(" s1 "); //$NON-NLS-1$
-		assertEquals("s1", result[0]); //$NON-NLS-1$
-		
-		result= Expressions.parseArguments("s1,s2"); //$NON-NLS-1$
-		assertEquals("s1", result[0]); //$NON-NLS-1$
-		assertEquals("s2", result[1]); //$NON-NLS-1$
-		
-		result= Expressions.parseArguments(" s1 , s2 "); //$NON-NLS-1$
-		assertEquals("s1", result[0]); //$NON-NLS-1$
-		assertEquals("s2", result[1]); //$NON-NLS-1$
-		
-		result= Expressions.parseArguments("' s1 ',' s2 '"); //$NON-NLS-1$
-		assertEquals(" s1 ", result[0]); //$NON-NLS-1$
-		assertEquals(" s2 ", result[1]); //$NON-NLS-1$
-		
-		result= Expressions.parseArguments(" s1 , ' s2 '"); //$NON-NLS-1$
-		assertEquals("s1", result[0]); //$NON-NLS-1$
-		assertEquals(" s2 ", result[1]); //$NON-NLS-1$
-		
-		result= Expressions.parseArguments("' s1 ', s2 "); //$NON-NLS-1$
-		assertEquals(" s1 ", result[0]); //$NON-NLS-1$
-		assertEquals("s2", result[1]); //$NON-NLS-1$
-		
-		result= Expressions.parseArguments("''''"); //$NON-NLS-1$
-		assertEquals("'", result[0]); //$NON-NLS-1$
-		
-		result= Expressions.parseArguments("''',''',','"); //$NON-NLS-1$
-		assertEquals("','", result[0]);		 //$NON-NLS-1$
-		assertEquals(",", result[1]); //$NON-NLS-1$
-		
-		result= Expressions.parseArguments("' s1 ', true "); //$NON-NLS-1$
-		assertEquals(" s1 ", result[0]); //$NON-NLS-1$
-		assertEquals(Boolean.TRUE, result[1]);
-		
-		boolean caught= false;
-		try {
-			Expressions.parseArguments("' s1"); //$NON-NLS-1$
-		} catch (CoreException e) {
-			caught= true;
-		}
-		assertTrue(caught);
-		caught= false;
-		try {
-			Expressions.parseArguments("'''s1"); //$NON-NLS-1$
-		} catch (CoreException e) {
-			caught= true;
-		}
-		assertTrue(caught);
-	}
-	
-	public void testSystemProperty() throws Exception {
-		SystemTestExpression expression= new SystemTestExpression("os.name", System.getProperty("os.name")); //$NON-NLS-1$ //$NON-NLS-2$
-		EvaluationResult result= expression.evaluate(new EvaluationContext(null, new Object()));
-		assertTrue(result == EvaluationResult.TRUE);
-	}
-	
-	public void testAdaptExpression() throws Exception {
-		AdaptExpression expression= new AdaptExpression("org.eclipse.core.internal.expressions.tests.Adapter"); //$NON-NLS-1$
-		expression.add(new InstanceofExpression("org.eclipse.core.internal.expressions.tests.Adapter")); //$NON-NLS-1$
-		EvaluationResult result= expression.evaluate(new EvaluationContext(null, new Adaptee()));
-		assertTrue(result == EvaluationResult.TRUE);
-	}
-	
-	public void testAdaptExpressionFail() throws Exception {
-		AdaptExpression expression= new AdaptExpression("org.eclipse.core.internal.expressions.tests.NotExisting"); //$NON-NLS-1$
-		EvaluationResult result= expression.evaluate(new EvaluationContext(null, new Adaptee()));
-		assertTrue(result == EvaluationResult.FALSE);
-	}
-	
-	public void testAdaptExpressionFail2() throws Exception {
-		AdaptExpression expression= new AdaptExpression("org.eclipse.core.internal.expressions.tests.Adapter"); //$NON-NLS-1$
-		expression.add(new InstanceofExpression("org.eclipse.core.internal.expressions.tests.NotExisting")); //$NON-NLS-1$
-		EvaluationResult result= expression.evaluate(new EvaluationContext(null, new Adaptee()));
-		assertTrue(result == EvaluationResult.FALSE);
-	}
-	
-	public void testVariableResolver() throws Exception {
-		final Object result= new Object();
-		IVariableResolver resolver= new IVariableResolver() {
-			public Object resolve(String name, Object[] args) throws CoreException {
-				assertEquals("variable", name); //$NON-NLS-1$
-				assertEquals("arg1", args[0]); //$NON-NLS-1$
-				assertEquals(Boolean.TRUE, args[1]);
-				return result;
-			}
-		};
-		EvaluationContext context= new EvaluationContext(null, new Object(), new IVariableResolver[] { resolver });
-		assertTrue(result == context.resolveVariable("variable", new Object[] {"arg1", Boolean.TRUE})); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-	
-	public void testEqualsExpression() throws Exception {
-		EqualsExpression exp= new EqualsExpression("name"); //$NON-NLS-1$
-		EvaluationContext context= new EvaluationContext(null, "name"); //$NON-NLS-1$
-		assertTrue(EvaluationResult.TRUE == exp.evaluate(context));
-		
-		exp= new EqualsExpression(Boolean.TRUE);
-		context= new EvaluationContext(null, Boolean.TRUE);
-		assertTrue(EvaluationResult.TRUE == exp.evaluate(context));		
-		
-		exp= new EqualsExpression("name"); //$NON-NLS-1$
-		context= new EvaluationContext(null, Boolean.TRUE);
-		assertTrue(EvaluationResult.FALSE == exp.evaluate(context));		
-	}
-	
-	public void testCountExpressionAnyNumber() throws Exception {
-		CountExpression exp= new CountExpression("*"); //$NON-NLS-1$
-		
-		List list= new ArrayList();
-		EvaluationContext context= new EvaluationContext(null, list);
-		assertTrue(EvaluationResult.TRUE == exp.evaluate(context));
-		
-		list.clear();
-		list.add("one"); //$NON-NLS-1$
-		context= new EvaluationContext(null, list);
-		assertTrue(EvaluationResult.TRUE == exp.evaluate(context));
-		
-		list.clear();
-		list.add("one"); //$NON-NLS-1$
-		list.add("two"); //$NON-NLS-1$
-		list.add("three"); //$NON-NLS-1$
-		context= new EvaluationContext(null, list);
-		assertTrue(EvaluationResult.TRUE == exp.evaluate(context));
-	}
-	
-	public void testCountExpressionExact() throws Exception {
-		CountExpression exp= new CountExpression("2"); //$NON-NLS-1$
-		
-		List list= new ArrayList();
-		list.add("one"); //$NON-NLS-1$
-		EvaluationContext context= new EvaluationContext(null, list);
-		assertTrue(EvaluationResult.FALSE == exp.evaluate(context));
-		
-		list.clear();
-		list.add("one"); //$NON-NLS-1$
-		list.add("two"); //$NON-NLS-1$
-		context= new EvaluationContext(null, list);
-		assertTrue(EvaluationResult.TRUE == exp.evaluate(context));
-		
-		list.clear();
-		list.add("one"); //$NON-NLS-1$
-		list.add("two"); //$NON-NLS-1$
-		list.add("three"); //$NON-NLS-1$
-		context= new EvaluationContext(null, list);
-		assertTrue(EvaluationResult.FALSE == exp.evaluate(context));
-	}
-	
-	public void testCountExpressionNoneOrOne() throws Exception {
-		CountExpression exp= new CountExpression("?"); //$NON-NLS-1$
-		
-		List list= new ArrayList();
-		EvaluationContext context= new EvaluationContext(null, list);
-		assertTrue(EvaluationResult.TRUE == exp.evaluate(context));
-		
-		list.clear();
-		list.add("one"); //$NON-NLS-1$
-		context= new EvaluationContext(null, list);
-		assertTrue(EvaluationResult.TRUE == exp.evaluate(context));
-		
-		list.clear();
-		list.add("one"); //$NON-NLS-1$
-		list.add("two"); //$NON-NLS-1$
-		context= new EvaluationContext(null, list);
-		assertTrue(EvaluationResult.FALSE == exp.evaluate(context));
-	}
-	
-	public void testCountExpressionOneOrMore() throws Exception {
-		CountExpression exp= new CountExpression("+"); //$NON-NLS-1$
-		
-		List list= new ArrayList();
-		EvaluationContext context= new EvaluationContext(null, list);
-		assertTrue(EvaluationResult.FALSE == exp.evaluate(context));
-		
-		list.clear();
-		list.add("one"); //$NON-NLS-1$
-		context= new EvaluationContext(null, list);
-		assertTrue(EvaluationResult.TRUE == exp.evaluate(context));
-		
-		list.clear();
-		list.add("one"); //$NON-NLS-1$
-		list.add("two"); //$NON-NLS-1$
-		context= new EvaluationContext(null, list);
-		assertTrue(EvaluationResult.TRUE == exp.evaluate(context));
-	}
-	
-	public void testCountExpressionNone() throws Exception {
-		CountExpression exp= new CountExpression("!"); //$NON-NLS-1$
-		
-		List list= new ArrayList();
-		EvaluationContext context= new EvaluationContext(null, list);
-		assertTrue(EvaluationResult.TRUE == exp.evaluate(context));
-		
-		list.clear();
-		list.add("one"); //$NON-NLS-1$
-		context= new EvaluationContext(null, list);
-		assertTrue(EvaluationResult.FALSE == exp.evaluate(context));
-		
-		list.clear();
-		list.add("one"); //$NON-NLS-1$
-		list.add("two"); //$NON-NLS-1$
-		context= new EvaluationContext(null, list);
-		assertTrue(EvaluationResult.FALSE == exp.evaluate(context));
-	}
-	
-	public void testInstanceofTrue() throws Exception {
-		B b= new B();
-		EvaluationContext context= new EvaluationContext(null, b);
-		
-		InstanceofExpression exp= new InstanceofExpression("org.eclipse.core.internal.expressions.tests.B"); //$NON-NLS-1$
-		assertTrue(EvaluationResult.TRUE == exp.evaluate(context));
-
-		exp= new InstanceofExpression("org.eclipse.core.internal.expressions.tests.A"); //$NON-NLS-1$
-		assertTrue(EvaluationResult.TRUE == exp.evaluate(context));
-		
-		exp= new InstanceofExpression("org.eclipse.core.internal.expressions.tests.I"); //$NON-NLS-1$
-		assertTrue(EvaluationResult.TRUE == exp.evaluate(context));
-	}
-	
-	public void testInstanceofFalse() throws Exception {
-		A a= new A();
-		EvaluationContext context= new EvaluationContext(null, a);
-		
-		InstanceofExpression exp= new InstanceofExpression("org.eclipse.core.internal.expressions.tests.B"); //$NON-NLS-1$
-		assertTrue(EvaluationResult.FALSE == exp.evaluate(context));
-	}
-	
-	public void testIterateExpressionAndTrue() throws Exception {
-		final List result= new ArrayList();
-		Expression myExpression= new Expression() {
-			public EvaluationResult evaluate(IEvaluationContext context) throws CoreException {
-				result.add(context.getDefaultVariable());
-				return EvaluationResult.TRUE;
-			}
-		};
-		IterateExpression exp= new IterateExpression("and"); //$NON-NLS-1$
-		exp.add(myExpression);
-		List input= new ArrayList();
-		input.add("one"); //$NON-NLS-1$
-		input.add("two"); //$NON-NLS-1$
-		EvaluationContext context= new EvaluationContext(null, input);
-		assertTrue(EvaluationResult.TRUE == exp.evaluate(context));
-		assertTrue(result.equals(input));
-	}
-	
-	public void testIterateExpressionAndFalse() throws Exception {
-		final List result= new ArrayList();
-		Expression myExpression= new Expression() {
-			public EvaluationResult evaluate(IEvaluationContext context) throws CoreException {
-				result.add(context.getDefaultVariable());
-				return EvaluationResult.FALSE;
-			}
-		};
-		IterateExpression exp= new IterateExpression("and"); //$NON-NLS-1$
-		exp.add(myExpression);
-		List input= new ArrayList();
-		input.add("one"); //$NON-NLS-1$
-		input.add("two"); //$NON-NLS-1$
-		EvaluationContext context= new EvaluationContext(null, input);
-		assertTrue(EvaluationResult.FALSE == exp.evaluate(context));
-		assertTrue(result.size() == 1 && result.get(0).equals("one")); //$NON-NLS-1$
-	}
-	
-	public void testIterateExpressionOrTrue() throws Exception {
-		final List result= new ArrayList();
-		Expression myExpression= new Expression() {
-			public EvaluationResult evaluate(IEvaluationContext context) throws CoreException {
-				result.add(context.getDefaultVariable());
-				return EvaluationResult.TRUE;
-			}
-		};
-		IterateExpression exp= new IterateExpression("or"); //$NON-NLS-1$
-		exp.add(myExpression);
-		List input= new ArrayList();
-		input.add("one"); //$NON-NLS-1$
-		input.add("two"); //$NON-NLS-1$
-		EvaluationContext context= new EvaluationContext(null, input);
-		assertTrue(EvaluationResult.TRUE == exp.evaluate(context));
-		assertTrue(result.size() == 1 && result.get(0).equals("one")); //$NON-NLS-1$
-	}
-	
-	public void testIterateExpressionOrFalse() throws Exception {
-		final List result= new ArrayList();
-		Expression myExpression= new Expression() {
-			public EvaluationResult evaluate(IEvaluationContext context) throws CoreException {
-				result.add(context.getDefaultVariable());
-				return EvaluationResult.FALSE;
-			}
-		};
-		IterateExpression exp= new IterateExpression("or"); //$NON-NLS-1$
-		exp.add(myExpression);
-		List input= new ArrayList();
-		input.add("one"); //$NON-NLS-1$
-		input.add("two"); //$NON-NLS-1$
-		EvaluationContext context= new EvaluationContext(null, input);
-		assertTrue(EvaluationResult.FALSE == exp.evaluate(context));
-		assertTrue(result.equals(input));
-	}
-	
-	public void testReadXMLExpression() throws Exception {
-		IExtensionRegistry registry= Platform.getExtensionRegistry();
-		IConfigurationElement[] ces= registry.getConfigurationElementsFor("org.eclipse.core.expressions.tests", "testParticipants"); //$NON-NLS-1$ //$NON-NLS-2$
-		
-		IConfigurationElement enable= findExtension(ces, "test1").getChildren("enablement")[0]; //$NON-NLS-1$ //$NON-NLS-2$
-		Expression exp= ExpressionConverter.getDefault().perform(enable);
-		ref(exp);
-	}
-
-	private IConfigurationElement findExtension(IConfigurationElement[] ces, String id) {
-		for (int i= 0; i < ces.length; i++) {
-			if (id.equals(ces[i].getAttribute("id"))) //$NON-NLS-1$
-				return ces[i];
-		}
-		return null;
-	}
-	
-	protected void ref(Expression exp) {
-		
-	}
-}
diff --git a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/I.java b/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/I.java
deleted file mode 100644
index 76dacf4..0000000
--- a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/I.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions.tests;
-
-
-public interface I {
-
-}
diff --git a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/I_TypeExtender.java b/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/I_TypeExtender.java
deleted file mode 100644
index 2ab494f..0000000
--- a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/I_TypeExtender.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions.tests;
-
-import org.eclipse.core.expressions.PropertyTester;
-import org.eclipse.core.internal.expressions.Assert;
-
-public class I_TypeExtender extends PropertyTester {
-
-	public boolean test(Object receiver, String method, Object[] args, Object expectedValue) {
-		if ("ordering".equals(method)) { //$NON-NLS-1$
-			return "I".equals(expectedValue); //$NON-NLS-1$
-		}
-		Assert.isTrue(false);
-		return false;
-	}
-}
diff --git a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/PropertyTesterTests.java b/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/PropertyTesterTests.java
deleted file mode 100644
index 6eca6b3..0000000
--- a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/PropertyTesterTests.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions.tests;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Platform;
-
-import org.eclipse.core.internal.expressions.Property;
-import org.eclipse.core.internal.expressions.TypeExtensionManager;
-
-import org.osgi.framework.Bundle;
-
-public class PropertyTesterTests extends TestCase {
-	
-	private A a;
-	private B b;
-	private I i;
-
-	private static final TypeExtensionManager fgManager= new TypeExtensionManager("propertyTesters"); //$NON-NLS-1$
-	
-	public static Test suite() {
-		return new TestSuite(PropertyTesterTests.class);
-	}
-	
-	protected void setUp() throws Exception {
-		a= new A();
-		b= new B();
-		i= b;
-	}
-	
-	public void testSimple() throws Exception {
-		assertTrue(test(a, "simple", null,"simple")); //$NON-NLS-1$ //$NON-NLS-2$
-		// second pass to check if cache is populated correctly
-		assertTrue(test(a, "simple", null,"simple")); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-	
-	public void testInherited() throws Exception {
-		assertTrue(test(b, "simple", null, "simple")); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue(test(i, "simple", null, "simple")); //$NON-NLS-1$ //$NON-NLS-2$
-		// second pass to check if cache is populated correctly
-		assertTrue(test(b, "simple", null, "simple")); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue(test(i, "simple", null, "simple")); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-	
-	public void testUnknown() throws Exception {
-		try {
-			test(a, "unknown", null, null); //$NON-NLS-1$
-		} catch (CoreException e) {
-			return;
-		}
-		assertTrue(false);
-	}
-	
-	public void testOverridden() throws Exception {
-		assertTrue(test(a, "overridden", null, "A")); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue(test(b, "overridden", null, "B")); //$NON-NLS-1$ //$NON-NLS-2$
-		A b_as_a= b;
-		assertTrue(test(b_as_a, "overridden", null, "B")); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue(test(i, "overridden", null, "B")); //$NON-NLS-1$ //$NON-NLS-2$
-		// second pass to check if cache is populated correctly
-		assertTrue(test(a, "overridden", null, "A")); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue(test(b, "overridden", null, "B")); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue(test(b_as_a, "overridden", null, "B")); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue(test(i, "overridden", null, "B")); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-	
-	public void testOdering() throws Exception {
-		assertTrue(test(b, "ordering", null, "A")); //$NON-NLS-1$ //$NON-NLS-2$
-		I other= new I() {};
-		assertTrue(test(other, "ordering", null, "I")); //$NON-NLS-1$ //$NON-NLS-2$
-		// second pass to check if cache is populated correctly
-		assertTrue(test(b, "ordering", null, "A")); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue(test(other, "ordering", null, "I")); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-	
-	public void testChaining() throws Exception {
-		assertTrue(test(a, "chaining", null, "A2")); //$NON-NLS-1$ //$NON-NLS-2$
-		// second pass to check if cache is populated correctly
-		assertTrue(test(a, "chaining", null, "A2")); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-	
-	// This test is questionable. It depends on if core runtime can
-	// guaratee any ordering in the plug-in registry.
-	public void testChainOrdering() throws Exception {
-		assertTrue(test(a, "chainOrdering", null, "A")); //$NON-NLS-1$ //$NON-NLS-2$
-		// second pass to check if cache is populated correctly
-		assertTrue(test(a, "chainOrdering", null, "A")); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-	
-	public void testWrongNameSpace() throws Exception {
-		try {
-			test(a, "differentNamespace", null, null); //$NON-NLS-1$
-		} catch (CoreException e) {
-			return;
-		}
-		assertTrue(false);		
-	}
-	
-	public void testDynamicPlugin() throws Exception {
-		if (true)
-			return;
-		A receiver= new A();
-		Property p= fgManager.getProperty(receiver, "org.eclipse.core.expressions.tests.dynamic", "testing"); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue(!p.isInstantiated());
-		Bundle bundle= Platform.getBundle("org.eclipse.core.expressions.tests.dynamic"); //$NON-NLS-1$
-		bundle.start();
-		p= fgManager.getProperty(receiver, "org.eclipse.core.expressions.tests.dynamic", "testing"); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue(p.isInstantiated());
-		bundle.stop();
-		p= fgManager.getProperty(receiver, "org.eclipse.core.expressions.tests.dynamic", "testing"); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue(!p.isInstantiated());
-	}
-	
-	public void testDifferentNameSpace() throws Exception {
-		assertTrue(test("org.eclipse.core.internal.expressions.tests2", a, "differentNamespace", null, "A3"));		 //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	}
-	
-	private boolean test(Object receiver, String property, Object[] args, Object expectedValue) throws CoreException {
-		Property p= fgManager.getProperty(receiver, "org.eclipse.core.internal.expressions.tests", property); //$NON-NLS-1$
-		assertTrue(p.isInstantiated());
-		return p.test(receiver, args, expectedValue);
-	}
-	
-	private boolean test(String namespace, Object receiver, String property, Object[] args, Object expectedValue) throws CoreException {
-		Property p= fgManager.getProperty(receiver, namespace, property);
-		assertTrue(p.isInstantiated());
-		return p.test(receiver, args, expectedValue);
-	}	
-}
diff --git a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/TestAdapterFactory.java b/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/TestAdapterFactory.java
deleted file mode 100644
index 150fd2b..0000000
--- a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/TestAdapterFactory.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions.tests;
-
-import org.eclipse.core.runtime.IAdapterFactory;
-
-public class TestAdapterFactory implements IAdapterFactory {
-
-	public Object getAdapter(Object adaptableObject, Class adapterType) {
-		if (Adapter.class.equals(adapterType))
-			return new Adapter();
-		return null;
-	}
-
-	public Class[] getAdapterList() {
-		return new Class[] { Adapter.class };
-	}
-}
diff --git a/tests/org.eclipse.core.expressions.tests/test.xml b/tests/org.eclipse.core.expressions.tests/test.xml
deleted file mode 100644
index e651fb1..0000000
--- a/tests/org.eclipse.core.expressions.tests/test.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<project name="testsuite" default="run" basedir=".">
-  <!-- The property ${eclipse-home} should be passed into this script -->
-  <!-- Set a meaningful default value for when it is not. -->
-  <property name="eclipse-home" value="${basedir}\..\.."/>
-
-  <!-- sets the properties eclipse-home, and library-file -->
-  <property name="plugin-name" value="org.eclipse.core.expressions.tests"/>
-  <property name="library-file"
-            value="${eclipse-home}/plugins/org.eclipse.test/library.xml"/>
-
-  <!-- This target holds all initialization code that needs to be done for -->
-  <!-- all tests that are to be run. Initialization for individual tests -->
-  <!-- should be done within the body of the suite target. -->
-  <target name="init">
-    <tstamp/>
-    <delete>
-      <fileset dir="${eclipse-home}" includes="org*.xml"/>
-    </delete>
-  </target>
-
-  <!-- This target defines the tests that need to be run. -->
-  <target name="suite">
-    <property name="expressions-folder" 
-              value="${eclipse-home}/expressions_folder"/>
-    <delete dir="${expressions-folder}" quiet="true"/>
-    <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
-      <property name="data-dir" value="${expressions-folder}"/>
-      <property name="plugin-name" value="${plugin-name}"/>
-      <property name="classname" 
-                value="org.eclipse.core.internal.expressions.tests.AllTests"/>
-    </ant>
-  </target>
-
-  <!-- This target holds code to cleanup the testing environment after -->
-  <!-- after all of the tests have been run. You can use this target to -->
-  <!-- delete temporary files that have been created. -->
-  <target name="cleanup">
-  </target>
-
-  <!-- This target runs the test suite. Any actions that need to happen -->
-  <!-- after all the tests have been run should go here. -->
-  <target name="run" depends="init,suite,cleanup">
-    <ant target="collect" antfile="${library-file}" dir="${eclipse-home}">
-      <property name="includes" value="org*.xml"/>
-      <property name="output-file" value="${plugin-name}.xml"/>
-    </ant>
-  </target>
-
-  <target name="performance">
-  </target>
-	
-</project>
diff --git a/tests/org.eclipse.core.tests.harness/.classpath b/tests/org.eclipse.core.tests.harness/.classpath
deleted file mode 100644
index 065ac06..0000000
--- a/tests/org.eclipse.core.tests.harness/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/tests/org.eclipse.core.tests.harness/.cvsignore b/tests/org.eclipse.core.tests.harness/.cvsignore
deleted file mode 100644
index c5e82d7..0000000
--- a/tests/org.eclipse.core.tests.harness/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
\ No newline at end of file
diff --git a/tests/org.eclipse.core.tests.harness/.project b/tests/org.eclipse.core.tests.harness/.project
deleted file mode 100644
index 060e874..0000000
--- a/tests/org.eclipse.core.tests.harness/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.core.tests.harness</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-	</natures>
-</projectDescription>
diff --git a/tests/org.eclipse.core.tests.harness/.settings/org.eclipse.core.resources.prefs b/tests/org.eclipse.core.tests.harness/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index f94afed..0000000
--- a/tests/org.eclipse.core.tests.harness/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue May 25 14:59:26 EDT 2004
-encoding/<project>=ISO-8859-1
-eclipse.preferences.version=1
diff --git a/tests/org.eclipse.core.tests.harness/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.core.tests.harness/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index cb6b34b..0000000
--- a/tests/org.eclipse.core.tests.harness/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,79 +0,0 @@
-#Fri May 20 11:12:37 EDT 2005
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/tests/org.eclipse.core.tests.harness/.settings/org.eclipse.jdt.ui.prefs b/tests/org.eclipse.core.tests.harness/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 4dfecba..0000000
--- a/tests/org.eclipse.core.tests.harness/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Fri Jan 06 15:52:00 EST 2006
-eclipse.preferences.version=1
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return Returns the ${bare_field_name}.\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} The ${bare_field_name} to set.\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\r\n * Copyright (c) ${year} IBM Corporation and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n *\r\n * Contributors\:\r\n *     IBM Corporation - initial API and implementation\r\n ******************************************************************************/\r\n</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @since 3.2\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="New classes and interfaces" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\r\n * Copyright (c) 2006 IBM Corporation and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n * \r\n * Contributors\:\r\n *     IBM Corporation - initial API and implementation\r\n *******************************************************************************/\r\n${package_declaration}\r\n\r\n/**\r\n * \r\n */\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">fail("4.99", ${exception_var});</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
diff --git a/tests/org.eclipse.core.tests.harness/META-INF/MANIFEST.MF b/tests/org.eclipse.core.tests.harness/META-INF/MANIFEST.MF
deleted file mode 100644
index 18f5f65..0000000
--- a/tests/org.eclipse.core.tests.harness/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,17 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Eclipse Core Tests Harness
-Bundle-SymbolicName: org.eclipse.core.tests.harness; singleton:=true
-Bundle-Version: 3.1.0
-Bundle-ClassPath: testharness.jar
-Bundle-Activator: org.eclipse.core.internal.compatibility.PluginActivator
-Bundle-Vendor: Eclipse.org
-Bundle-Localization: plugin
-Export-Package: org.eclipse.core.tests.harness,
- org.eclipse.core.tests.session,
- org.eclipse.core.tests.session.samples
-Require-Bundle: org.eclipse.core.runtime.compatibility,
- org.junit,
- org.eclipse.pde.junit.runtime,
- org.eclipse.test.performance;resolution:=optional
-Eclipse-AutoStart: true
diff --git a/tests/org.eclipse.core.tests.harness/about.html b/tests/org.eclipse.core.tests.harness/about.html
deleted file mode 100644
index 6f6b96c..0000000
--- a/tests/org.eclipse.core.tests.harness/about.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<title>About</title>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/tests/org.eclipse.core.tests.harness/build-tests.xml b/tests/org.eclipse.core.tests.harness/build-tests.xml
deleted file mode 100644
index fc634e2..0000000
--- a/tests/org.eclipse.core.tests.harness/build-tests.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0"?>
-<project name="Build Core Sniff" basedir="." default="init">
-
-  <property name="root" value="${basedir}/.."/>
-  <property name="temp" value="${root}/__temp"/>
-  <property name="plugins" value="${temp}/eclipse/plugins"/>
-
-  <target name="init">
-    <tstamp/>
-
-    <delete dir="${temp}"/>
-    <mkdir dir="${plugins}"/>
- 
-    <antcall target="buildPlugin">
-      <param name="pluginName" value="org.eclipse.osgi.tests" />
-      <param name="jarName" value="osgitests.jar" />
-    </antcall>
- 
-    <antcall target="buildPlugin">
-      <param name="pluginName" value="org.eclipse.core.tests.resources" />
-      <param name="jarName" value="resourcestests.jar" />
-    </antcall>
- 
-    <antcall target="buildPlugin">
-      <param name="pluginName" value="org.eclipse.core.tests.resources.saveparticipant" />
-      <param name="jarName" value="saveparticipant.jar" />
-    </antcall>
-
-    <antcall target="buildPlugin">
-      <param name="pluginName" value="org.eclipse.core.tests.resources.saveparticipant1" />
-      <param name="jarName" value="saveparticipant1.jar" />
-    </antcall>
-
-    <antcall target="buildPlugin">
-      <param name="pluginName" value="org.eclipse.core.tests.resources.saveparticipant2" />
-      <param name="jarName" value="saveparticipant2.jar" />
-    </antcall>
-
-    <antcall target="buildPlugin">
-      <param name="pluginName" value="org.eclipse.core.tests.resources.saveparticipant3" />
-      <param name="jarName" value="saveparticipant3.jar" />
-    </antcall>
-
-    <antcall target="buildPlugin">
-      <param name="pluginName" value="org.eclipse.core.tests.runtime" />
-      <param name="jarName" value="runtimetests.jar" />
-    </antcall>
-
-    <antcall target="buildPlugin">
-      <param name="pluginName" value="org.eclipse.core.tests.harness" />
-      <param name="jarName" value="testharness.jar" />
-    </antcall>
-
-    <zip zipfile="${basedir}/coreSniff${DSTAMP}.zip"
-       basedir="${temp}"
-    />
-
-    <delete dir="${temp}"/>
-    <eclipse.refreshLocal resource="org.eclipse.core.tests.harness"/>
-  </target>
-
-  <target name="buildPlugin">
-    <copy todir="${plugins}/${pluginName}">
-      <fileset dir="${root}/${pluginName}"/>
-    </copy>
-    <jar jarfile="${plugins}/${pluginName}/${jarName}"
-         basedir="${plugins}/${pluginName}/bin"
-    />
-    <delete dir="${plugins}/${pluginName}/bin"/>
-  </target>
-
-</project>
\ No newline at end of file
diff --git a/tests/org.eclipse.core.tests.harness/build.properties b/tests/org.eclipse.core.tests.harness/build.properties
deleted file mode 100644
index 6510f94..0000000
--- a/tests/org.eclipse.core.tests.harness/build.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2003 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-source.testharness.jar=src/
-bin.includes = testharness.jar,\
-               about.html,\
-               META-INF/
-
diff --git a/tests/org.eclipse.core.tests.harness/readme.txt b/tests/org.eclipse.core.tests.harness/readme.txt
deleted file mode 100644
index 1bb41ac..0000000
--- a/tests/org.eclipse.core.tests.harness/readme.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-README for org.eclipse.core.tests.harness
-
-This plug-in works as a library for core tests. It also holds the script
-to launch the core automated tests after the a build.
-In order to execute launch the tests, the test framework plug-ins have
-to available.
-
-Command line (from the eclipse home directory) for executing tests:
-
-java -cp startup.jar org.eclipse.core.launcher.Main -application org.eclipse.ant.core.antRunner -file plugins\org.eclipse.core.tests.harness\test.xml run -dev bin
\ No newline at end of file
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/BundleTestingHelper.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/BundleTestingHelper.java
deleted file mode 100644
index 27290e3..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/BundleTestingHelper.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.harness;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import junit.framework.Assert;
-import org.eclipse.core.runtime.IRegistryChangeEvent;
-import org.eclipse.core.runtime.Platform;
-import org.osgi.framework.*;
-import org.osgi.service.packageadmin.PackageAdmin;
-
-public class BundleTestingHelper {
-
-	public static Bundle[] getBundles(BundleContext context, String symbolicName, String version) {
-		ServiceReference packageAdminReference = context.getServiceReference(PackageAdmin.class.getName());
-		if (packageAdminReference == null)
-			throw new IllegalStateException("No package admin service found");
-		PackageAdmin packageAdmin = (PackageAdmin) context.getService(packageAdminReference);
-		Bundle[] result = packageAdmin.getBundles(symbolicName, version);
-		context.ungetService(packageAdminReference);
-		return result;
-	}
-
-	/**
-	 * @deprecated
-	 */
-	public static Bundle installBundle(BundleContext context, String location) throws BundleException, MalformedURLException, IOException {
-		return installBundle("", context, location);
-	}
-
-	public static Bundle installBundle(String tag, BundleContext context, String location) throws BundleException, MalformedURLException, IOException {
-		URL entry = context.getBundle().getEntry(location);
-		if (entry == null)
-			Assert.fail(tag + " entry " + location + " could not be found in " + context.getBundle().getSymbolicName());
-		Bundle installed = context.installBundle(Platform.asLocalURL(entry).toExternalForm());
-		return installed;
-	}
-
-	/**
-	 * Do PackageAdmin.refreshPackages() in a synchronous way.  After installing
-	 * all the requested bundles we need to do a refresh and want to ensure that 
-	 * everything is done before returning.
-	 * @param bundles
-	 * TODO remove this since all we wanted was to resolve bundles, what is done by #resolveBundles in this class 
-	 */
-	//copied from EclipseStarter
-	public static void refreshPackages(BundleContext context, Bundle[] bundles) {
-		if (bundles.length == 0)
-			return;
-		ServiceReference packageAdminRef = context.getServiceReference(PackageAdmin.class.getName());
-		PackageAdmin packageAdmin = null;
-		if (packageAdminRef != null) {
-			packageAdmin = (PackageAdmin) context.getService(packageAdminRef);
-			if (packageAdmin == null)
-				return;
-		}
-		// TODO this is such a hack it is silly.  There are still cases for race conditions etc
-		// but this should allow for some progress...
-		// (patch from John A.)
-		final boolean[] flag = new boolean[] {false};
-		FrameworkListener listener = new FrameworkListener() {
-			public void frameworkEvent(FrameworkEvent event) {
-				if (event.getType() == FrameworkEvent.PACKAGES_REFRESHED)
-					synchronized (flag) {
-						flag[0] = true;
-						flag.notifyAll();
-					}
-			}
-		};
-		context.addFrameworkListener(listener);
-		packageAdmin.refreshPackages(bundles);
-		synchronized (flag) {
-			while (!flag[0]) {
-				try {
-					flag.wait();
-				} catch (InterruptedException e) {
-					// who cares....
-				}
-			}
-		}
-		context.removeFrameworkListener(listener);
-		context.ungetService(packageAdminRef);
-	}
-
-	public static void resolveBundles(BundleContext context, Bundle[] bundles) {
-		ServiceReference packageAdminRef = context.getServiceReference(PackageAdmin.class.getName());
-		PackageAdmin packageAdmin = null;
-		if (packageAdminRef != null) {
-			packageAdmin = (PackageAdmin) context.getService(packageAdminRef);
-			if (packageAdmin == null)
-				return;
-		}
-		packageAdmin.resolveBundles(bundles);
-		context.ungetService(packageAdminRef);
-	}
-
-	public static void runWithBundles(String tag, Runnable runnable, BundleContext context, String[] locations, TestRegistryChangeListener listener) {
-		if (listener != null)
-			listener.register();
-		try {
-			Bundle[] installed = new Bundle[locations.length];
-			for (int i = 0; i < locations.length; i++)
-				try {
-					installed[i] = installBundle(tag + ".setup.0", context, locations[i]);
-					Assert.assertEquals(tag + ".setup.1." + locations[i], Bundle.INSTALLED, installed[i].getState());
-				} catch (BundleException e) {
-					CoreTest.fail(tag + ".setup.2" + locations[i], e);
-				} catch (IOException e) {
-					CoreTest.fail(tag + ".setup.3" + locations[i], e);
-				}
-			if (listener != null)
-				listener.reset();
-			BundleTestingHelper.resolveBundles(context, installed);
-			if (listener != null) {
-				IRegistryChangeEvent event = listener.getEvent(installed.length * 10000);
-				// ensure the contributions were properly added
-				Assert.assertNotNull(tag + ".setup.4", event);
-			}
-			try {
-				runnable.run();
-			} finally {
-				if (listener != null)
-					listener.reset();
-				// remove installed bundles
-				for (int i = 0; i < installed.length; i++)
-					try {
-						installed[i].uninstall();
-					} catch (BundleException e) {
-						CoreTest.fail(tag + ".tearDown.1." + locations[i], e);
-					}
-				BundleTestingHelper.resolveBundles(context, installed);
-				if (listener != null) {
-					IRegistryChangeEvent event = listener.getEvent(installed.length * 10000);
-					// ensure the contributions were properly added
-					Assert.assertNotNull(tag + ".tearDown.2", event);
-				}
-			}
-		} finally {
-			if (listener != null)
-				listener.unregister();
-		}
-	}
-
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/CancelingProgressMonitor.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/CancelingProgressMonitor.java
deleted file mode 100644
index f06203a..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/CancelingProgressMonitor.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.harness;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-
-public class CancelingProgressMonitor extends TestProgressMonitor {
-	/**
-	 * @see IProgressMonitor#isCanceled
-	 */
-	public boolean isCanceled() {
-		return true;
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/CoreTest.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/CoreTest.java
deleted file mode 100644
index 2593c18..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/CoreTest.java
+++ /dev/null
@@ -1,301 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.harness;
-
-import java.io.*;
-import junit.framework.TestCase;
-import org.eclipse.core.runtime.*;
-
-/**
- * @since 3.1
- */
-public class CoreTest extends TestCase {
-
-	/** counter for generating unique random file system locations */
-	protected static int nextLocationCounter = 0;
-
-	// plug-in identified for the core.tests.harness plug-in.
-	public static final String PI_HARNESS = "org.eclipse.core.tests.harness";
-
-	public static void debug(String message) {
-		String id = "org.eclipse.core.tests.harness/debug";
-		String option = Platform.getDebugOption(id);
-		if (Boolean.TRUE.toString().equalsIgnoreCase(option))
-			System.out.println(message);
-	}
-
-	/**
-	 * Fails the test due to the given throwable.
-	 */
-	public static void fail(String message, Throwable e) {
-		// If the exception is a CoreException with a multistatus
-		// then print out the multistatus so we can see all the info.
-		if (e instanceof CoreException) {
-			IStatus status = ((CoreException) e).getStatus();
-			//if the status does not have an exception, print the stack for this one
-			if (status.getException() == null)
-				e.printStackTrace();
-			write(status, 0);
-		} else
-			e.printStackTrace();
-		fail(message + ": " + e);
-	}
-
-	private static void indent(OutputStream output, int indent) {
-		for (int i = 0; i < indent; i++)
-			try {
-				output.write("\t".getBytes());
-			} catch (IOException e) {
-				// ignore
-			}
-	}
-
-	public static void log(String pluginID, IStatus status) {
-		Platform.getLog(Platform.getBundle(pluginID)).log(status);
-	}
-
-	public static void log(String pluginID, Throwable e) {
-		log(pluginID, new Status(IStatus.ERROR, pluginID, IStatus.ERROR, "Error", e)); //$NON-NLS-1$
-	}
-
-	private static void write(IStatus status, int indent) {
-		PrintStream output = System.out;
-		indent(output, indent);
-		output.println("Severity: " + status.getSeverity());
-
-		indent(output, indent);
-		output.println("Plugin ID: " + status.getPlugin());
-
-		indent(output, indent);
-		output.println("Code: " + status.getCode());
-
-		indent(output, indent);
-		output.println("Message: " + status.getMessage());
-
-		if (status.getException() != null) {
-			indent(output, indent);
-			output.print("Exception: ");
-			status.getException().printStackTrace(output);
-		}
-
-		if (status.isMultiStatus()) {
-			IStatus[] children = status.getChildren();
-			for (int i = 0; i < children.length; i++)
-				write(children[i], indent + 1);
-		}
-	}
-
-	public CoreTest() {
-		super();
-	}
-
-	public CoreTest(String name) {
-		super(name);
-	}
-
-	/**
-	 * Asserts that a stream closes successfully. Null streams
-	 * are ignored, but failure to close the stream is reported as
-	 * an assertion failure.
-	 * @since 3.2
-	 */
-	protected void assertClose(InputStream stream) {
-		if (stream == null)
-			return;
-		try {
-			stream.close();
-		} catch (IOException e) {
-			fail("Failed close in assertClose", e);
-		}
-	}
-
-	/**
-	 * Asserts that a stream closes successfully. Null streams
-	 * are ignored, but failure to close the stream is reported as
-	 * an assertion failure.
-	 * @since 3.2
-	 */
-	protected void assertClose(OutputStream stream) {
-		if (stream == null)
-			return;
-		try {
-			stream.close();
-		} catch (IOException e) {
-			fail("Failed close in assertClose", e);
-		}
-	}
-
-	protected void assertEquals(String message, Object[] expected, Object[] actual) {
-		if (expected == null && actual == null)
-			return;
-		if (expected == null || actual == null)
-			fail(message);
-		if (expected.length != actual.length)
-			fail(message);
-		for (int i = 0; i < expected.length; i++)
-			assertEquals(message, expected[i], actual[i]);
-	}
-
-	protected void assertEquals(String message, Object[] expected, Object[] actual, boolean orderImportant) {
-		// if the order in the array must match exactly, then call the other method
-		if (orderImportant) {
-			assertEquals(message, expected, actual);
-			return;
-		}
-		// otherwise use this method and check that the arrays are equal in any order
-		if (expected == null && actual == null)
-			return;
-		if (expected == actual)
-			return;
-		if (expected == null || actual == null)
-			assertTrue(message + ".1", false);
-		if (expected.length != actual.length)
-			assertTrue(message + ".2", false);
-		boolean[] found = new boolean[expected.length];
-		for (int i = 0; i < expected.length; i++) {
-			for (int j = 0; j < expected.length; j++) {
-				if (!found[j] && expected[i].equals(actual[j]))
-					found[j] = true;
-			}
-		}
-		for (int i = 0; i < found.length; i++)
-			if (!found[i])
-				assertTrue(message + ".3." + i, false);
-	}
-
-	/**
-	 * Create the given file in the file system. 
-	 */
-	public void createFileInFileSystem(File file, InputStream contents) throws IOException {
-		file.getParentFile().mkdirs();
-		FileOutputStream output = new FileOutputStream(file);
-		transferData(contents, output);
-	}
-
-	protected void ensureDoesNotExistInFileSystem(java.io.File file) {
-		FileSystemHelper.clear(file);
-	}
-
-	public InputStream getContents(java.io.File target, String errorCode) {
-		try {
-			return new FileInputStream(target);
-		} catch (IOException e) {
-			fail(errorCode, e);
-		}
-		return null; // never happens
-	}
-
-	/**
-	 * Return an input stream with some the specified text to use
-	 * as contents for a file resource.
-	 */
-	public InputStream getContents(String text) {
-		return new ByteArrayInputStream(text.getBytes());
-	}
-
-	public IProgressMonitor getMonitor() {
-		return new FussyProgressMonitor();
-	}
-
-	/**
-	 * Return an input stream with some random text to use
-	 * as contents for a file resource.
-	 */
-	public InputStream getRandomContents() {
-		return new ByteArrayInputStream(getRandomString().getBytes());
-	}
-
-	/**
-	 * Returns a unique location on disk.  It is guaranteed that no file currently
-	 * exists at that location.  The returned location will be unique with respect 
-	 * to all other locations generated by this method in the current session.  
-	 * If the caller creates a folder or file at this location, they are responsible for 
-	 * deleting it when finished.
-	 */
-	public IPath getRandomLocation() {
-		return FileSystemHelper.getRandomLocation(getTempDir());
-	}
-
-	/**
-	 * Return String with some random text to use
-	 * as contents for a file resource.
-	 */
-	public String getRandomString() {
-		switch ((int) Math.round(Math.random() * 10)) {
-			case 0 :
-				return "este e' o meu conteudo (portuguese)";
-			case 1 :
-				return "ho ho ho";
-			case 2 :
-				return "I'll be back";
-			case 3 :
-				return "don't worry, be happy";
-			case 4 :
-				return "there is no imagination for more sentences";
-			case 5 :
-				return "customize yours";
-			case 6 :
-				return "foo";
-			case 7 :
-				return "bar";
-			case 8 :
-				return "foobar";
-			case 9 :
-				return "case 9";
-			default :
-				return "these are my contents";
-		}
-	}
-
-	public IPath getTempDir() {
-		return FileSystemHelper.getTempDir();
-	}
-
-	public String getUniqueString() {
-		return System.currentTimeMillis() + "-" + Math.random();
-	}
-
-	/**
-	 * Copy the data from the input stream to the output stream.
-	 * Close both streams when finished.
-	 */
-	public void transferData(InputStream input, OutputStream output) {
-		try {
-			try {
-				int c = 0;
-				while ((c = input.read()) != -1)
-					output.write(c);
-			} finally {
-				input.close();
-				output.close();
-			}
-		} catch (IOException e) {
-			e.printStackTrace();
-			assertTrue(e.toString(), false);
-		}
-	}
-
-	/**
-	 * Copy the data from the input stream to the output stream.
-	 * Do not close either of the streams.
-	 */
-	public void transferDataWithoutClose(InputStream input, OutputStream output) {
-		try {
-			int c = 0;
-			while ((c = input.read()) != -1)
-				output.write(c);
-		} catch (IOException e) {
-			e.printStackTrace();
-			assertTrue(e.toString(), false);
-		}
-	}
-
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/EclipseTestHarnessApplication.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/EclipseTestHarnessApplication.java
deleted file mode 100644
index 87f7c6f..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/EclipseTestHarnessApplication.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.harness;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.*;
-import junit.framework.Test;
-import junit.textui.TestRunner;
-import org.eclipse.core.runtime.*;
-
-public class EclipseTestHarnessApplication implements IPlatformRunnable {
-	protected List tests;
-
-	/** command line arguments made available to all tests. */
-	public static String[] args;
-
-	/** true if workspace tests should log their deltas */
-	private static boolean deltas = false;
-
-	/** The id of the test harness plug-in */
-	private static final String PI_TESTHARNESS = "org.eclipse.core.tests.harness"; //$NON-NLS-1$
-
-	/** the simple id of the tests extension point in the test harness plug-in */
-	private static final String PT_TESTS = "tests"; //$NON-NLS-1$
-
-	public EclipseTestHarnessApplication() {
-		tests = new ArrayList(5);
-	}
-
-	public static boolean deltasEnabled() {
-		return deltas;
-	}
-
-	/**
-	 * Finds, creates and returns a prototypical test object for the test with
-	 * the given name/id.  Returns <code>null</code> if no such test is found
-	 * or the class defined by the test extension could not be found.
-	 * In either failure case a message is output on the System console.
-	 */
-	protected Object findTestFor(String testName) {
-		IExtensionPoint point = Platform.getPluginRegistry().getExtensionPoint(PI_TESTHARNESS, PT_TESTS);
-		IConfigurationElement[] elements = point.getConfigurationElements();
-		for (int i = 0; i < elements.length; i++) {
-			IConfigurationElement element = elements[i];
-			if (element.getName().equals("test")) {
-				String id = element.getAttribute("id");
-				if (id != null && id.equals(testName))
-					try {
-						return element.createExecutableExtension("run");
-					} catch (CoreException e) {
-						System.err.println("Could not instantiate test: " + testName);
-						e.printStackTrace();
-						return null;
-					}
-			}
-		}
-		System.out.println("Could not find test: " + testName);
-		return null;
-	}
-
-	protected String[] processCommandLine(String[] args) {
-		int[] configArgs = new int[100];
-		configArgs[0] = -1; // need to initialize the first element to something that could not be an index.
-		int configArgIndex = 0;
-		for (int i = 0; i < args.length; i++) {
-			boolean found = false;
-			// check for args without parameters (i.e., a flag arg)
-			// see if we should be logging deltas
-			if (args[i].equalsIgnoreCase("-deltas")) {
-				found = true;
-				deltas = true;
-			}
-			if (found) {
-				configArgs[configArgIndex++] = i;
-				continue;
-			}
-
-			// check for args with parameters
-			if (i == args.length - 1 || args[i + 1].startsWith("-"))
-				continue;
-
-			String arg = args[++i];
-			// check for the which test to run
-			if (args[i - 1].equalsIgnoreCase("-test")) {
-				found = true;
-				// fully qualified name of the test class to run
-				tests.add(arg);
-			}
-
-			// done checking for args.  Remember where an arg was found 
-			if (found) {
-				configArgs[configArgIndex++] = i - 1;
-				configArgs[configArgIndex++] = i;
-			}
-		}
-
-		//remove all the arguments consumed by this argument parsing
-		if (configArgIndex == 0)
-			return args;
-		String[] passThruArgs = new String[args.length - configArgIndex];
-		configArgIndex = 0;
-		int j = 0;
-		for (int i = 0; i < args.length; i++) {
-			if (i == configArgs[configArgIndex])
-				configArgIndex++;
-			else
-				passThruArgs[j++] = args[i];
-		}
-		return passThruArgs;
-	}
-
-	/**
-	 * Runs a set of tests as defined by the given command line args.
-	 * This is the platform application entry point.
-	 * @see IPlatformRunnable
-	 */
-	public Object run(Object userArgs) throws Exception {
-		args = processCommandLine((String[]) userArgs);
-		for (Iterator i = tests.iterator(); i.hasNext();)
-			run((String) i.next());
-		return null;
-	}
-
-	protected Object run(String testName) throws Exception {
-		Object testObject = findTestFor(testName);
-		if (testObject == null)
-			return null;
-		Class testClass = testObject.getClass();
-		Method method = testClass.getDeclaredMethod("suite", new Class[0]); //$NON-NLS-1$
-		Test suite = null;
-		try {
-			suite = (Test) method.invoke(testClass, new Object[0]);
-		} catch (InvocationTargetException e) {
-			if (e.getTargetException() instanceof Error)
-				throw (Error) e.getTargetException();
-			else
-				throw e;
-		}
-		run(suite);
-		return null;
-	}
-
-	protected void run(Test suite) throws Exception {
-		TestRunner.run(suite);
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/ExampleTest.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/ExampleTest.java
deleted file mode 100644
index 7a598fb..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/ExampleTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.harness;
-
-import java.util.Arrays;
-import java.util.Comparator;
-import junit.framework.*;
-import org.eclipse.core.runtime.IPluginDescriptor;
-import org.eclipse.core.runtime.Platform;
-
-/**
- * Tests which use the Eclipse Platform runtime only.
- */
-public class ExampleTest extends TestCase {
-	/**
-	 * Need a zero argument constructor to satisfy the test harness.
-	 * This constructor should not do any real work nor should it be
-	 * called by user code.
-	 */
-	public ExampleTest() {
-		super(null);
-	}
-
-	public ExampleTest(String name) {
-		super(name);
-	}
-
-	public static Test suite() {
-		return new TestSuite(ExampleTest.class);
-	}
-
-	public void testPluginRegistry() throws Throwable {
-		System.out.println();
-		IPluginDescriptor[] descriptors = Platform.getPluginRegistry().getPluginDescriptors();
-		Comparator c = new Comparator() {
-			public int compare(Object a, Object b) {
-				return ((IPluginDescriptor) a).getLabel().compareTo(((IPluginDescriptor) b).getLabel());
-			}
-		};
-		Arrays.sort(descriptors, c);
-		for (int i = 0; i < descriptors.length; i++) {
-			IPluginDescriptor descriptor = descriptors[i];
-			System.out.print(descriptor.isPluginActivated() ? "+\t" : "-\t");
-			System.out.println(descriptor.getLabel() + " (" + descriptor.getUniqueIdentifier() + ") [" + descriptor.getVersionIdentifier() + "]");
-		}
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/FileSystemComparator.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/FileSystemComparator.java
deleted file mode 100644
index ec82b9a..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/FileSystemComparator.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.harness;
-
-import java.io.*;
-import java.util.*;
-import junit.framework.Assert;
-
-/** 
- * A utility class that compares file system states. It is able to take snapshot of the file system and save ot into a 
- * text file for laer comparison. 
- */
-public class FileSystemComparator {
-
-	private class FileSummary {
-		boolean directory;
-		private String path;
-		private long size;
-		private long timestamp;
-
-		FileSummary(File file) {
-			if (!file.exists())
-				throw new IllegalArgumentException(file + " does not exist");
-			path = file.getAbsolutePath();
-			timestamp = file.lastModified();
-			size = file.isDirectory() ? -1 : file.lastModified();
-		}
-
-		FileSummary(String file, long timestamp, long size) {
-			this.path = file;
-			this.timestamp = timestamp;
-			this.size = directory ? -1 : size;
-		}
-
-		public void assertEquals(String tag, FileSummary other) {
-			if (!path.equals(other.path))
-				throw new IllegalArgumentException();
-			Assert.assertEquals(tag + " timestamps differ", timestamp, other.timestamp);
-			Assert.assertEquals(tag + " sizes differ", timestamp, other.timestamp);
-		}
-
-		public boolean equals(Object obj) {
-			return (obj instanceof FileSummary) && ((FileSummary) obj).path.equals(path);
-		}
-
-		public String getPath() {
-			return path;
-		}
-
-		public long getSize() {
-			return size;
-		}
-
-		public long getTimestamp() {
-			return timestamp;
-		}
-
-		public int hashCode() {
-			return path.hashCode();
-		}
-
-		public String toString() {
-			return path + " timestamp: " + timestamp + " size: " + size;
-		}
-	}
-
-	private static final String SNAPSHOT_FILE_NAME = "snapshot";
-
-	public void compareSnapshots(String tag, Object oldOne, Object newOne) {
-		Map oldSnapshot = (Map) oldOne;
-		Map newSnapshot = (Map) newOne;
-		boolean sameSize = oldSnapshot.size() == newSnapshot.size();
-		for (Iterator i = newSnapshot.values().iterator(); i.hasNext();) {
-			FileSummary newElement = (FileSummary) i.next();
-			FileSummary oldElement = (FileSummary) oldSnapshot.get(newElement.getPath());
-			Assert.assertNotNull(tag + " - " + newElement.getPath() + " was added", oldElement);
-			Assert.assertEquals(tag + " - " + newElement.getPath() + " changed timestamp ", oldElement.getTimestamp(), newElement.getTimestamp());
-			Assert.assertEquals(tag + " - " + newElement.getPath() + " changed size ", oldElement.getSize(), newElement.getSize());
-		}
-		// one or more entries were removed
-		// need to do the reverse (take the old snapshot as basis) to figure out what are the missing entries
-		if (!sameSize) {
-			for (Iterator i = oldSnapshot.values().iterator(); i.hasNext();) {
-				FileSummary oldElement = (FileSummary) i.next();
-				FileSummary newElement = (FileSummary) newSnapshot.get(oldElement.getPath());
-				Assert.assertNotNull(tag + " - " + oldElement.getPath() + " was removed", newElement);
-			}
-		}
-	}
-
-	public Object loadSnapshot(File rootLocation) throws IOException {
-		File summaryFile = new File(rootLocation, SNAPSHOT_FILE_NAME);
-		Map snapshot = new HashMap();
-		BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(summaryFile)));
-		try {
-			String line;
-			while ((line = in.readLine()) != null) {
-				String path = line;
-				long timestamp = Long.parseLong(in.readLine());
-				long size = Long.parseLong(in.readLine());
-				snapshot.put(path, new FileSummary(path, timestamp, size));
-			}
-		} finally {
-			in.close();
-		}
-		return snapshot;
-	}
-
-	public void saveSnapshot(Object toSave, File rootLocation) throws IOException {
-		File summaryFile = new File(rootLocation, SNAPSHOT_FILE_NAME);
-		PrintWriter out = new PrintWriter(new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream(summaryFile))));
-		Map snapshot = (Map) toSave;
-		try {
-			for (Iterator i = snapshot.values().iterator(); i.hasNext();) {
-				FileSummary element = (FileSummary) i.next();
-				out.println(element.getPath());
-				out.println(element.getTimestamp());
-				out.println(element.getSize());
-			}
-		} finally {
-			out.close();
-		}
-	}
-
-	/**
-	 * It is a good idea to skip the root location because when the snapshot file is saved, it may cause 
-	 * the timestamp for the parent direcotry to change on some OSes.
-	 */
-	public Object takeSnapshot(File rootLocation, boolean skip) {
-		Map snapshot = new HashMap();
-		takeSnapshot(snapshot, rootLocation, skip);
-		return snapshot;
-	}
-
-	private void takeSnapshot(Map snapshot, File rootLocation, boolean skip) {
-		FileSummary summary = new FileSummary(rootLocation);
-		if (!skip && !rootLocation.getName().equals(SNAPSHOT_FILE_NAME))
-			snapshot.put(rootLocation.getAbsolutePath(), summary);
-		if (!rootLocation.isDirectory())
-			return;
-		File[] entries = rootLocation.listFiles();
-		if (entries == null)
-			return;
-		for (int i = 0; i < entries.length; i++)
-			takeSnapshot(snapshot, entries[i], false);
-	}
-
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/FileSystemHelper.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/FileSystemHelper.java
deleted file mode 100644
index ae261f5..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/FileSystemHelper.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.harness;
-
-import java.io.IOException;
-import org.eclipse.core.runtime.*;
-
-/**
- * Home for file system-related utility methods. 
- */
-public class FileSystemHelper {
-	/** counter for generating unique random file system locations */
-	protected static int nextLocationCounter = 0;
-	private static final long MASK = 0x00000000FFFFFFFFL;
-
-	/*
-	 * Return the root directory for the temp dir.
-	 */
-	public static IPath getTempDir() {
-		String tempPath = System.getProperty("java.io.tmpdir");
-		try {
-			tempPath = new java.io.File(tempPath).getCanonicalPath();
-		} catch (IOException e) {
-			//ignore and use non-canonical path
-		}
-		return new Path(tempPath);
-	}
-
-	/**
-	 * Returns a unique location on disk.  It is guaranteed that no file currently
-	 * exists at that location.  The returned location will be unique with respect 
-	 * to all other locations generated by this method in the current session.  
-	 * If the caller creates a folder or file at this location, they are responsible for 
-	 * deleting it when finished.
-	 */
-	public static IPath getRandomLocation(IPath parent) {
-		IPath path = computeRandomLocation(parent);
-		while (path.toFile().exists()) {
-			try {
-				Thread.sleep(10);
-			} catch (InterruptedException e) {
-				// ignore
-			}
-			path = computeRandomLocation(parent);
-		}
-		return path;
-	}
-
-	public static IPath computeRandomLocation(IPath parent) {
-		long segment = (((long) ++nextLocationCounter) << 32) | (System.currentTimeMillis() & MASK);
-		return parent.append(Long.toString(segment));
-	}
-
-	public static void clear(java.io.File file) {
-		if (!file.exists())
-			return;
-		if (file.isDirectory()) {
-			String[] files = file.list();
-			if (files != null) // be careful since file.list() can return null
-				for (int i = 0; i < files.length; ++i)
-					clear(new java.io.File(file, files[i]));
-		}
-		if (!file.delete()) {
-			String message = "ensureDoesNotExistInFileSystem(File) could not delete: " + file.getPath();
-			CoreTest.log(CoreTest.PI_HARNESS, new Status(IStatus.WARNING, CoreTest.PI_HARNESS, IStatus.OK, message, null));
-		}
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/FussyProgressMonitor.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/FussyProgressMonitor.java
deleted file mode 100644
index e8c75ea..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/FussyProgressMonitor.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.harness;
-
-import junit.framework.AssertionFailedError;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.jobs.Job;
-
-/**
- * This class can be used for testing progress monitoring.
- * If you want to reuse one instance of this class for several
- * invocations, make sure that you call prepare() before every
- * invocation.
- * Call sanityCheck() after the operation whose progress monitoring
- * you are testing.
- */
-public class FussyProgressMonitor extends TestProgressMonitor {
-	public class FussyProgressAssertionFailed extends AssertionFailedError {
-		/**
-		 * All serializable objects should have a stable serialVersionUID
-		 */
-		private static final long serialVersionUID = 1L;
-
-		FussyProgressAssertionFailed(String name) {
-			super(name);
-		}
-	}
-
-	private static final double EPS_FACTOR = 0.01;
-	private static final long NOTICEABLE_DELAY = 1000; // milliseconds
-	private boolean beginTaskCalled = false;
-	private long beginTime;
-	private boolean canceled = false;
-	private int doneCalls = 0;
-	private boolean hasFailed = false;
-	private boolean sanityCheckCalled = true;
-	private String taskName;
-	private int totalWork;
-	private double workedSoFar = 0;
-	private Job job;
-	public FussyProgressMonitor() {
-		prepare();
-	}
-	/**
-	 * Creates a fussy progress monitor that is associated with a particular job.
-	 * On assertion failure the job name will be included in the failure message.
-	 * @param job
-	 */
-	public FussyProgressMonitor(Job job) {
-		this();
-		this.job = job;
-	}
-
-	/**
-	 * 
-	 * @param reason java.lang.String
-	 * @param condition boolean
-	 */
-	private void assertTrue(String reason, boolean condition) {
-		// silently ignore follow-up failures
-		if (hasFailed)
-			return;
-		if (!condition) {
-			hasFailed = true;
-			if (job != null)
-				reason += " in job: " + job.getName();
-			throw new FussyProgressAssertionFailed(reason);
-		}
-		//Assert.assert(reason, condition);
-	}
-
-	/**
-	 * @see IProgressMonitor#beginTask
-	 */
-	public void beginTask(String name, int totalWork) {
-		//if (beginTaskCalled && doneCalls > 0) {
-		// this is a second call to beginTask which is allowed because
-		// the previous task is done.
-		//prepare();
-		//}
-		assertTrue("beginTask may only be called once (old name=" + taskName + ")", beginTaskCalled == false);
-		beginTaskCalled = true;
-		taskName = name;
-		assertTrue("total work must be positive or UNKNOWN", totalWork > 0 || totalWork == UNKNOWN);
-		this.totalWork = totalWork;
-		beginTime = System.currentTimeMillis();
-	}
-
-	/**
-	 * @see IProgressMonitor#done
-	 */
-	public void done() {
-		assertTrue("done must be called after beginTask", beginTaskCalled);
-		assertTrue("done can only be called once", doneCalls == 0);
-		//assert("done is called before all work is done", totalWork==UNKNOWN || totalWork==workedSoFar);
-		workedSoFar = totalWork;
-		doneCalls++;
-	}
-
-	public void internalWorked(double work) {
-		assertTrue("can accept calls to worked/internalWorked only after beginTask", beginTaskCalled);
-		assertTrue("can accept calls to worked/internalWorked only before done is called", doneCalls == 0);
-		assertTrue("amount worked should be positive, not " + work, work >= 0);
-		if (work == 0)
-			CoreTest.debug("INFO: amount worked should be positive, not " + work);
-		workedSoFar += work;
-		assertTrue("worked " + (workedSoFar - totalWork) + " more than totalWork", totalWork == UNKNOWN || workedSoFar <= totalWork + (totalWork * EPS_FACTOR));
-	}
-
-	/**
-	 * @see IProgressMonitor#isCanceled
-	 */
-	public boolean isCanceled() {
-		return canceled;
-	}
-
-	/**
-	 * should be called before every use of a FussyProgressMonitor
-	 */
-	public void prepare() {
-		//if (!sanityCheckCalled)
-		//EclipseWorkspaceTest.log("sanityCheck has not been called for previous use");
-		sanityCheckCalled = false;
-		taskName = null;
-		totalWork = 0;
-		workedSoFar = 0;
-		beginTaskCalled = false;
-		doneCalls = 0;
-		hasFailed = false;
-	}
-
-	/**
-	 *  should be called after every use of a FussyProgressMonitor
-	 */
-	public void sanityCheck() {
-		if (sanityCheckCalled)
-			CoreTest.debug("sanityCheck has already been called");
-		sanityCheckCalled = true;
-		//	EclipseWorkspaceTest.log("sanity checking: " + taskName + " : " + (System.currentTimeMillis() - beginTime) + " ms, " + workedSoFar);
-		long duration = System.currentTimeMillis() - beginTime;
-		if (duration > NOTICEABLE_DELAY && beginTaskCalled) {
-			assertTrue("this operation took: " + duration + "ms, it should report progress", workedSoFar > 0);
-		}
-		assertTrue("done has not been called on ProgressMonitor", hasFailed || !beginTaskCalled || doneCalls > 0);
-	}
-
-	/**
-	 * @see IProgressMonitor#setCanceled
-	 */
-	public void setCanceled(boolean b) {
-		canceled = b;
-	}
-
-	/**
-	 * @see IProgressMonitor#setTaskName
-	 */
-	public void setTaskName(String name) {
-		taskName = name;
-	}
-
-	/**
-	 * @see IProgressMonitor#subTask
-	 */
-	public void subTask(String name) {
-		// do nothing
-	}
-
-	/**
-	 * @see IProgressMonitor#worked
-	 */
-	public void worked(int work) {
-		internalWorked(work);
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/LoggingPerformanceTestResult.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/LoggingPerformanceTestResult.java
deleted file mode 100644
index e50ae67..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/LoggingPerformanceTestResult.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.harness;
-
-import java.io.*;
-import java.util.Enumeration;
-import java.util.Iterator;
-import junit.framework.TestFailure;
-
-/**
- * A LoggingPerformanceTestResult adds the ability to create an HTML or
- * other output file, and have test results written to that file instead
- * of the standard output.
- */
-public class LoggingPerformanceTestResult extends PerformanceTestResult {
-	private static PrintWriter createWriter(File logFile) {
-		try {
-			PrintWriter writer = new PrintWriter(new FileOutputStream(logFile), true);
-			return writer;
-		} catch (IOException e) {
-			System.out.println("Unable to open log output file: " + logFile);
-			return new PrintWriter(System.out, true);
-		}
-	}
-
-	public LoggingPerformanceTestResult(File logFile) {
-		super(createWriter(logFile));
-		printHTMLHeader(output);
-	}
-
-	/**
-	 * Logs the given string in the test log file
-	 */
-	public synchronized void log(String s) {
-		output.println(s);
-	}
-
-	/**
-	 * Prints the test result
-	 */
-	public synchronized void print() {
-		try {
-			super.print();
-			printHTMLTrailer(output);
-		} finally {
-			output.flush();
-			output.close();
-		}
-	}
-
-	/**
-	 * Prints the errors to the standard output
-	 */
-	protected void printErrors(PrintWriter out) {
-		out.println("<h3>Error summary</h3>");
-		int count = errorCount();
-		if (count != 0) {
-			if (count == 1)
-				out.println("There was " + count + " error:<p>");
-			else
-				out.println("There were " + count + " errors:<p>");
-			int i = 1;
-			for (Enumeration e = errors(); e.hasMoreElements(); i++) {
-				TestFailure failure = (TestFailure) e.nextElement();
-				out.println(i + ") " + failure.failedTest() + "<p>");
-				failure.thrownException().printStackTrace(out);
-				out.println("<p>");
-			}
-		} else {
-			out.println("No errors reported.");
-		}
-	}
-
-	/**
-	 * Prints the failures to the output
-	 */
-	protected void printFailures(PrintWriter out) {
-		out.println("<h3>Failure summary</h3>");
-		int count = failureCount();
-		if (count != 0) {
-			if (count == 1)
-				out.println("There was " + count + " failure:<p>");
-			else
-				out.println("There were " + count + " failures:<p>");
-			int i = 1;
-			for (Enumeration e = failures(); e.hasMoreElements(); i++) {
-				TestFailure failure = (TestFailure) e.nextElement();
-				out.println(i + ") " + failure.failedTest() + "<p>");
-				failure.thrownException().printStackTrace(out);
-				out.println("<p>");
-			}
-		} else {
-			out.println("No failures reported.");
-		}
-	}
-
-	/**
-	 * Prints the header of the report
-	 */
-	protected void printHeader(PrintWriter out) {
-	}
-
-	/**
-	 * Prints the header of the report
-	 */
-	protected void printHTMLHeader(PrintWriter out) {
-		StringBuffer buf = new StringBuffer();
-		buf.append("<html>\n<head>\n<title>Eclipse Performance Test Output Page</title>");
-		buf.append("</head>\n<body>\n");
-		out.println(buf.toString());
-	}
-
-	/**
-	 * Prints the header of the report
-	 */
-	protected void printHTMLTrailer(PrintWriter out) {
-		out.println("</body>");
-		out.println("</html>");
-	}
-
-	/**
-	 * Prints the timings of the result.
-	 */
-
-	protected void printTimings(PrintWriter out) {
-		out.println("<h3>Timing summary</h3>");
-		out.println("<ul>");
-
-		// print out all timing results to the console
-		for (Iterator it = timerList.iterator(); it.hasNext();) {
-			PerformanceTimer timer = (PerformanceTimer) it.next();
-			out.println("<li>" + timer.getName() + " : " + timer.getElapsedTime() + " ms</li>");
-		}
-		out.println("</ul>");
-	}
-
-	/**
-	 * Start the timer with the given name.  If the timer has already
-	 * been created, send it a startTiming message.  If not, create it
-	 * and send the new timer the startTiming message.
-	 */
-
-	public synchronized void startTimer(String timerName) {
-		super.startTimer(timerName);
-		//log("Starting timer: " + timerName);
-	}
-
-	/**
-	 * Look up the timer with the given name and send it a stopTiming
-	 * message.  If the timer does not exist, report an error.
-	 */
-
-	public synchronized void stopTimer(String timerName) {
-		super.stopTimer(timerName);
-		//log("Stopping timer: " + timerName);
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/PerformanceTestResult.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/PerformanceTestResult.java
deleted file mode 100644
index f0965f3..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/PerformanceTestResult.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.harness;
-
-import java.io.PrintWriter;
-import java.util.*;
-import junit.framework.*;
-
-/**
- * Test result for a performance test.  Keeps track of all timers that
- * have been created within the test. 
- */
-public class PerformanceTestResult extends TestResult {
-	protected PrintWriter output;
-	protected ArrayList timerList = new ArrayList();
-	protected HashMap timers = new HashMap();
-
-	public PerformanceTestResult() {
-		this(new PrintWriter(System.out));
-	}
-
-	public PerformanceTestResult(PrintWriter outputStream) {
-		this.output = outputStream;
-	}
-
-	/**
-	 * Informs the result that a test was completed.
-	 */
-	public synchronized void endTest(Test test) {
-		print();
-	}
-
-	/**
-	 * Prints the test result
-	 */
-	public synchronized void print() {
-		stopTimers();
-		printHeader(output);
-		printErrors(output);
-		printFailures(output);
-		printTimings(output);
-	}
-
-	/**
-	 * Prints the errors to the output
-	 */
-	protected void printErrors(PrintWriter out) {
-		int count = errorCount();
-		if (count != 0) {
-			if (count == 1)
-				out.println("There was " + count + " error:");
-			else
-				out.println("There were " + count + " errors:");
-			int i = 1;
-			for (Enumeration e = errors(); e.hasMoreElements(); i++) {
-				TestFailure failure = (TestFailure) e.nextElement();
-				out.println(i + ") " + failure.failedTest());
-				failure.thrownException().printStackTrace(out);
-			}
-		}
-	}
-
-	/**
-	 * Prints the failures to the output
-	 */
-	protected void printFailures(PrintWriter out) {
-		int count = failureCount();
-		if (count != 0) {
-			if (count == 1)
-				out.println("There was " + count + " failure:");
-			else
-				out.println("There were " + count + " failures:");
-			int i = 1;
-			for (Enumeration e = failures(); e.hasMoreElements(); i++) {
-				TestFailure failure = (TestFailure) e.nextElement();
-				out.println(i + ") " + failure.failedTest());
-				failure.thrownException().printStackTrace(out);
-			}
-		}
-	}
-
-	/**
-	 * Prints the header of the report
-	 */
-	protected void printHeader(PrintWriter out) {
-		if (wasSuccessful()) {
-			out.println();
-			out.print("OK");
-			out.println(" (" + runCount() + " tests)");
-		} else {
-			out.println();
-			out.println("!!!FAILURES!!!");
-			out.println("Test Results:");
-			out.println("Run: " + runCount() + " Failures: " + failureCount() + " Errors: " + errorCount());
-		}
-	}
-
-	/**
-	 * Prints the timings of the result.
-	 */
-	protected void printTimings(PrintWriter out) {
-		// print out all timing results to the console
-		for (Iterator it = timerList.iterator(); it.hasNext();) {
-			PerformanceTimer timer = (PerformanceTimer) it.next();
-			out.println("Timing " + timer.getName() + " : " + timer.getElapsedTime() + " ms ");
-		}
-	}
-
-	/**
-	 * Start the test
-	 */
-	public synchronized void startTest(Test test) {
-		super.startTest(test);
-		System.out.print(".");
-	}
-
-	/**
-	 * Start the timer with the given name.  If the timer has already
-	 * been created, send it a startTiming message.  If not, create it
-	 * and send the new timer the startTiming message.
-	 */
-
-	public synchronized void startTimer(String timerName) {
-		PerformanceTimer timer = (PerformanceTimer) timers.get(timerName);
-		if (timer == null) {
-			timer = new PerformanceTimer(timerName);
-			timers.put(timerName, timer);
-			timerList.add(timer);
-		}
-		timer.startTiming();
-	}
-
-	/**
-	 * Look up the timer with the given name and send it a stopTiming
-	 * message.  If the timer does not exist, report an error.
-	 */
-	public synchronized void stopTimer(String timerName) {
-		PerformanceTimer timer = (PerformanceTimer) timers.get(timerName);
-		if (timer == null) {
-			throw new Error(timerName + " is not a valid timer name ");
-		}
-		timer.stopTiming();
-	}
-
-	/**
-	 * Stops all timers
-	 */
-	protected void stopTimers() {
-		for (Iterator it = timerList.iterator(); it.hasNext();) {
-			((PerformanceTimer) it.next()).stopTiming();
-		}
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/PerformanceTestRunner.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/PerformanceTestRunner.java
deleted file mode 100644
index 951d80d..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/PerformanceTestRunner.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.harness;
-
-import junit.framework.TestCase;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.test.performance.Performance;
-import org.eclipse.test.performance.PerformanceMeter;
-
-/**
- * Helper class for executing a performance test. Takes care of starting, stopping,
- * and commiting performance timers.
- */
-public abstract class PerformanceTestRunner {
-	
-	private String regressionReason;
-	
-	public void setRegressionReason(String comment) {
-		this.regressionReason = comment;
-	}
-
-	/**
-	 * Implemented by subclasses to perform the work to be measured.
-	 */
-	protected abstract void test();
-
-	/**
-	 * Executes the performance test the given number of times. Use the outer time
-	 * to execute the test several times in order to obtain a normalized average. Use
-	 * the inner loop for very fast tests that would otherwise be difficult to measure
-	 * due to Java's poor timer granularity.  The inner loop is not needed for long
-	 * tests that typically take more than a second to execute.
-	 * 
-	 * @param testCase The test that is running (used to obtain an appropriate meter)
-	 * @param outer The number of repetitions of the test.
-	 * @param inner The number of repetitions within the performance timer.
-	 */
-	public final void run(TestCase testCase, int outer, int inner) {
-		Performance perf = Performance.getDefault();
-		PerformanceMeter meter = perf.createPerformanceMeter(perf.getDefaultScenarioId(testCase));
-		if (regressionReason != null)
-			perf.setComment(meter, Performance.EXPLAINS_DEGRADATION_COMMENT, regressionReason);
-		try {
-			for (int i = 0; i < outer; i++) {
-				setUp();
-				meter.start();
-				for (int j = 0; j < inner; j++)
-					test();
-				meter.stop();
-				tearDown();
-			}
-			meter.commit();
-			perf.assertPerformance(meter);
-		} catch (CoreException e) {
-			CoreTest.fail("Failed performance test", e);
-		} finally {
-			meter.dispose();
-		}
-	}
-	protected void setUp() throws CoreException{
-		// subclasses to override
-	}
-
-	protected void tearDown() throws CoreException {
-		// subclasses to override
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/PerformanceTimer.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/PerformanceTimer.java
deleted file mode 100644
index a43a4b2..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/PerformanceTimer.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.harness;
-
-/**
- * The timer class used by performance tests.
- */
-class PerformanceTimer {
-	private String fName;
-	private long fElapsedTime;
-	private long fStartTime;
-
-	/**
-	 * 
-	 */
-	public PerformanceTimer(String name) {
-		fName = name;
-		fElapsedTime = 0;
-		fStartTime = 0;
-	}
-
-	/**
-	 * Return the elapsed time.
-	 */
-	public long getElapsedTime() {
-		return fElapsedTime;
-	}
-
-	/**
-	 * Return the timer name.
-	 */
-	public String getName() {
-		return fName;
-	}
-
-	/**
-	 * Start the timer.
-	 */
-	public void startTiming() {
-		fStartTime = System.currentTimeMillis();
-	}
-
-	/**
-	 * Stop the timer, add the elapsed time to the total.
-	 */
-	public void stopTiming() {
-		if (fStartTime == 0)
-			return;
-		long timeNow = System.currentTimeMillis();
-		fElapsedTime += (timeNow - fStartTime);
-		fStartTime = 0;
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/TestBarrier.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/TestBarrier.java
deleted file mode 100644
index 0dfccc0..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/TestBarrier.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.harness;
-
-import junit.framework.Assert;
-
-/**
- * This class acts as an implementation of a barrier that is appropriate for
- * concurrency test cases that want to fail if a thread fails to achieve a
- * particular state in a reasonable amount of time. This prevents test suites
- * from hanging indefinitely if a concurrency bug is found that would normally
- * result in an indefinite hang.
- */
-public class TestBarrier {
-
-	/**
-	 * Convience status constant that can be interpreted differently by each
-	 * test.
-	 */
-	public static final int STATUS_BLOCKED = 6;
-	/**
-	 * Convience status constant that can be interpreted differently by each
-	 * test.
-	 */
-	public static final int STATUS_DONE = 5;
-	/**
-	 * Convience status constant that can be interpreted differently by each
-	 * test.
-	 */
-	public static final int STATUS_RUNNING = 3;
-	/**
-	 * Convience status constant that can be interpreted differently by each
-	 * test.
-	 */
-	public static final int STATUS_START = 1;
-	/**
-	 * Convience status constant that can be interpreted differently by each
-	 * test.
-	 */
-	public static final int STATUS_WAIT_FOR_DONE = 4;
-	/**
-	 * Convience status constant that can be interpreted differently by each
-	 * test.
-	 */
-	public static final int STATUS_WAIT_FOR_RUN = 2;
-	/**
-	 * Convience status constant that can be interpreted differently by each
-	 * test.
-	 */
-	public static final int STATUS_WAIT_FOR_START = 0;
-	private final int myIndex;
-	/**
-	 * The status array and index for this barrier object
-	 */
-	private final int[] myStatus;
-
-	/**
-	 * Blocks the calling thread until the status integer at the given index
-	 * is set to the given value. Fails if the status change does not occur in 
-	 * a reasonable amount of time.
-	 * @param statuses the array of statuses that represent the states of
-	 * an array of jobs or threads
-	 * @param index the index into the statuses array that the calling
-	 * thread is waiting for
-	 * @param status the status that the calling thread should wait for
-	 */
-	private static void doWaitForStatus(int[] statuses, int index, int status, int timeout) {
-		int i = 0;
-		while (statuses[index] != status) {
-			try {
-				Thread.yield();
-				Thread.sleep(100);
-				Thread.yield();
-			} catch (InterruptedException e) {
-				//ignore
-			}
-			//sanity test to avoid hanging tests
-			Assert.assertTrue("Timeout waiting for status to change from " + getStatus(statuses[index]) + " to " + getStatus(status), i++ < timeout);
-		}
-	}
-
-	private static String getStatus(int status) {
-		switch (status) {
-			case STATUS_WAIT_FOR_START :
-				return "WAIT_FOR_START";
-			case STATUS_START :
-				return "START";
-			case STATUS_WAIT_FOR_RUN :
-				return "WAIT_FOR_RUN";
-			case STATUS_RUNNING :
-				return "RUNNING";
-			case STATUS_WAIT_FOR_DONE :
-				return "WAIT_FOR_DONE";
-			case STATUS_DONE :
-				return "DONE";
-			case STATUS_BLOCKED :
-				return "BLOCKED";
-			default :
-				return "UNKNOWN_STATUS";
-		}
-	}
-
-	public static void waitForStatus(int[] location, int status) {
-		doWaitForStatus(location, 0, status, 100);
-	}
-
-	/**
-	 * Blocks the current thread until the given variable is set to the given
-	 * value Times out after a predefined period to avoid hanging tests
-	 */
-	public static void waitForStatus(int[] location, int index, int status) {
-		doWaitForStatus(location, index, status, 100);
-	}
-
-	/**
-	 * Creates a new test barrier suitable for a single thread
-	 */
-	public TestBarrier() {
-		this(new int[1], 0);
-	}
-
-	/**
-	 * Creates a new test barrier on the provided status array, suitable for 
-	 * acting as a barrier for multiple threads.
-	 */
-	public TestBarrier(int[] location, int index) {
-		this.myStatus = location;
-		this.myIndex = index;
-	}
-
-	/**
-	 * Sets this barrier object's status.
-	 */
-	public void setStatus(int status) {
-		myStatus[myIndex] = status;
-	}
-
-	/**
-	 * Blocks the current thread until the receiver's status is set to the given
-	 * value. Times out after a predefined period to avoid hanging tests
-	 */
-	public void waitForStatus(int status) {
-		waitForStatus(myStatus, myIndex, status);
-	}
-
-	/**
-	 * The same as other barrier methods, except it will not fail if the job
-	 * does not start in a "reasonable" time. This is only appropriate for tests
-	 * that are explicitly very long running.
-	 */
-	public void waitForStatusNoFail(int status) {
-		doWaitForStatus(myStatus, myIndex, status, 100000);
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/TestJob.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/TestJob.java
deleted file mode 100644
index eae1305..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/TestJob.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.harness;
-
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.jobs.Job;
-
-/**
- * A job that runs for a specified amount of ticks, where each tick is represented
- * by a sleep for a specified amount of milliseconds.
- */
-public class TestJob extends Job {
-	private int ticks;
-	private long tickLength;
-	private int runCount = 0;
-
-	/**
-	 * A job that runs for one second in 100 millisecond increments.
-	 */
-	public TestJob(String name) {
-		this(name, 10, 100);
-	}
-
-	/**
-	 * A job that runs for the specified number of ticks at the
-	 * given tick duration.
-	 * @param name The name of this test job
-	 * @param ticks The number of work ticks that this job should perform
-	 * @param tickDuration The duration in milliseconds of each work tick
-	 */
-	public TestJob(String name, int ticks, long tickDuration) {
-		super(name);
-		this.ticks = ticks;
-		this.tickLength = tickDuration;
-	}
-
-	/**
-	 * Returns the number of times this job instance has been run, possibly including 
-	 * the current invocation if the job is currently running.
-	 */
-	public synchronized int getRunCount() {
-		return runCount;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
-	 */
-	public IStatus run(IProgressMonitor monitor) {
-		setRunCount(getRunCount() + 1);
-		//must have positive work
-		monitor.beginTask(getName(), ticks <= 0 ? 1 : ticks);
-		try {
-			for (int i = 0; i < ticks; i++) {
-				monitor.subTask("Tick: " + i);
-				if (monitor.isCanceled())
-					return Status.CANCEL_STATUS;
-				try {
-					Thread.sleep(tickLength);
-				} catch (InterruptedException e) {
-					//ignore
-				}
-				monitor.worked(1);
-			}
-			if (ticks <= 0)
-				monitor.worked(1);
-		} finally {
-			monitor.done();
-		}
-		return Status.OK_STATUS;
-	}
-
-	private synchronized void setRunCount(int count) {
-		runCount = count;
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/TestProgressMonitor.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/TestProgressMonitor.java
deleted file mode 100644
index 84301df..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/TestProgressMonitor.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.harness;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-
-public abstract class TestProgressMonitor implements IProgressMonitor {
-
-	/**
-	 * @see IProgressMonitor#beginTask
-	 */
-	public void beginTask(String name, int totalWork) {
-		//do nothing
-	}
-
-	/**
-	 * @see IProgressMonitor#done
-	 */
-	public void done() {
-		//do nothing
-	}
-
-	public void internalWorked(double work) {
-		//do nothing
-	}
-
-	/**
-	 * @see IProgressMonitor#isCanceled
-	 */
-	public boolean isCanceled() {
-		return false;
-	}
-
-	/**
-	 * @see IProgressMonitor#setCanceled
-	 */
-	public void setCanceled(boolean b) {
-		//do nothing
-	}
-
-	/**
-	 * @see IProgressMonitor#setTaskName
-	 */
-	public void setTaskName(String name) {
-		//do nothing
-	}
-
-	/**
-	 * @see IProgressMonitor#subTask
-	 */
-	public void subTask(String name) {
-		//do nothing
-	}
-
-	/**
-	 * @see IProgressMonitor#worked
-	 */
-	public void worked(int work) {
-		//do nothing
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/TestRegistryChangeListener.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/TestRegistryChangeListener.java
deleted file mode 100644
index ce238dc..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/TestRegistryChangeListener.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.harness;
-
-import java.util.LinkedList;
-import java.util.List;
-import org.eclipse.core.runtime.*;
-
-/**
- * Allows test cases to wait for event notification so they can make assertions on the event.  
- */
-public class TestRegistryChangeListener implements IRegistryChangeListener {
-	private List events = new LinkedList();
-	private String xpNamespace;
-	private String xpId;
-	private String extNamespace;
-	private String extId;
-
-	/**
-	 * Creates a new listener. The parameters allow filtering events based on extension point/extension's 
-	 * namespaces/ids.	
-	 */
-	public TestRegistryChangeListener(String xpNamespace, String xpId, String extNamespace, String extId) {
-		if (xpId != null && xpNamespace == null)
-			throw new IllegalArgumentException();
-		if (extId != null && extNamespace == null)
-			throw new IllegalArgumentException();
-		if (xpId == null && extId != null)
-			throw new IllegalArgumentException();
-		this.xpNamespace = xpNamespace;
-		this.xpId = xpId;
-		this.extNamespace = extNamespace;
-		this.extId = extId;
-	}
-
-	/**
-	 * @see IRegistryChangeListener#registryChanged
-	 */
-	public synchronized void registryChanged(IRegistryChangeEvent newEvent) {
-		if (xpId != null) {
-			if (extId != null) {
-				if (newEvent.getExtensionDelta(xpNamespace, xpId, extNamespace + '.' + extId) == null)
-					return;
-			} else if (newEvent.getExtensionDeltas(xpNamespace, xpId).length == 0)
-				return;
-		}
-		this.events.add(newEvent);
-		notify();
-	}
-
-	/**
-	 * Returns the first event that is received, blocking for at most <code>timeout</code> milliseconds.
-	 * Returns <code>null</code> if a event was not received for the time allowed.
-	 * 
-	 * @param timeout the maximum time to wait in milliseconds. If zero, this method will 
-	 * block until an event is received 
-	 * @return the first event received, or <code>null</code> if none was received
-	 */
-	public synchronized IRegistryChangeEvent getEvent(long timeout) {
-		if (!events.isEmpty())
-			return (IRegistryChangeEvent) events.remove(0);
-		try {
-			wait(timeout);
-		} catch (InterruptedException e) {
-			// who cares?
-		}
-		return events.isEmpty() ? null : (IRegistryChangeEvent) events.remove(0);
-	}
-
-	public void register() {
-		Platform.getExtensionRegistry().addRegistryChangeListener(this, xpNamespace);
-	}
-
-	public void unregister() {
-		Platform.getExtensionRegistry().removeRegistryChangeListener(this);
-	}
-	
-	public synchronized void reset() {
-		events.clear();
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/ConfigurationSessionTestSuite.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/ConfigurationSessionTestSuite.java
deleted file mode 100644
index 7441ce6..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/ConfigurationSessionTestSuite.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.session;
-
-import java.io.*;
-import java.net.URL;
-import java.util.*;
-import junit.framework.*;
-import org.eclipse.core.internal.runtime.InternalPlatform;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.tests.harness.CoreTest;
-import org.eclipse.core.tests.harness.FileSystemHelper;
-import org.eclipse.core.tests.session.SetupManager.SetupException;
-import org.eclipse.osgi.service.datalocation.Location;
-import org.osgi.framework.Bundle;
-
-public class ConfigurationSessionTestSuite extends SessionTestSuite {
-	// include configurator as it is required by compatibility, but do not set it to start 	
-	public static String[] MINIMAL_BUNDLE_SET = {
-		// -- new portion:
-		"org.eclipse.equinox.common@2:start", 
-		"org.eclipse.core.jobs@2:start", 
-		"org.eclipse.core.runtime.compatibility.registry",
-		"org.eclipse.equinox.registry@2:start", 
-		"org.eclipse.equinox.preferences", 
-		"org.eclipse.core.contenttype", 
-		// -- end of new
-		"org.eclipse.core.runtime@2:start", 
-		"org.eclipse.core.runtime.compatibility", 
-		"org.eclipse.update.configurator", 
-		"org.eclipse.core.tests.harness", 
-		"org.eclipse.jdt.junit.runtime", 
-		"org.eclipse.pde.junit.runtime", 
-		"org.junit", 
-		"org.eclipse.test.performance"
-		};
-
-	private static final String PROP_CONFIG_AREA_READ_ONLY = InternalPlatform.PROP_CONFIG_AREA + ".readOnly";
-	private static final String PROP_CONFIG_CASCADED = "osgi.configuration.cascaded";
-	private static final String PROP_SHARED_CONFIG_AREA = "osgi.sharedConfiguration.area";
-	private Collection bundles = new ArrayList();
-	private boolean cascaded;
-
-	// by default we clean-up after ourselves
-	private boolean cleanUp = true;
-
-	private IPath configurationPath = FileSystemHelper.getRandomLocation(FileSystemHelper.getTempDir());
-	private boolean prime = true;
-	private boolean readOnly;
-	// should the test cases be run in alphabetical order?
-	private boolean shouldSort;
-
-	public ConfigurationSessionTestSuite(String pluginId) {
-		super(pluginId);
-	}
-
-	public ConfigurationSessionTestSuite(String pluginId, Class theClass) {
-		super(pluginId, theClass);
-		this.shouldSort = true;
-	}
-
-	public ConfigurationSessionTestSuite(String pluginId, Class theClass, String name) {
-		super(pluginId, theClass, name);
-		this.shouldSort = true;
-	}
-
-	public ConfigurationSessionTestSuite(String pluginId, String name) {
-		super(pluginId, name);
-	}
-
-	public void addBundle(String id) {
-		bundles.add(getURL(id));
-	}
-
-	private void createConfigINI() throws IOException {
-		Assert.assertTrue("1.0", !bundles.isEmpty());
-		Properties contents = new Properties();
-		StringBuffer osgiBundles = new StringBuffer();
-		for (Iterator i = this.bundles.iterator(); i.hasNext();) {
-			osgiBundles.append(i.next());
-			osgiBundles.append(',');
-		}
-		osgiBundles.deleteCharAt(osgiBundles.length() - 1);
-		contents.put("osgi.bundles", osgiBundles.toString());
-		String osgiFramework = getURL("org.eclipse.osgi");
-		contents.put("osgi.framework", osgiFramework);
-		contents.put("osgi.bundles.defaultStartLevel", "4");
-		contents.put("osgi.install.area", Platform.getInstallLocation().getURL().toExternalForm());
-		contents.put(PROP_CONFIG_CASCADED, Boolean.toString(cascaded));
-		if (cascaded)
-			contents.put(PROP_SHARED_CONFIG_AREA, Platform.getConfigurationLocation().getURL().toExternalForm());
-		contents.put(PROP_CONFIG_AREA_READ_ONLY, Boolean.toString(readOnly));
-		// save the properties
-		File configINI = configurationPath.append("config.ini").toFile();
-		OutputStream out = null;
-		try {
-			out = new BufferedOutputStream(new FileOutputStream(configINI));
-			contents.store(out, null);
-		} finally {
-			if (out != null)
-				out.close();
-		}
-	}
-
-	protected void fillTestDescriptor(TestDescriptor test) throws SetupException {
-		super.fillTestDescriptor(test);
-		if (prime) {
-			test.getSetup().setSystemProperty(PROP_CONFIG_AREA_READ_ONLY, Boolean.FALSE.toString());
-			prime = false;
-		}
-	}
-
-	public IPath getConfigurationPath() {
-		return configurationPath;
-	}
-
-	private String getURL(String id) {
-		String suffix = "";
-		int atIndex = id.indexOf("@");
-		if (atIndex >= 0) {
-			suffix = id.substring(atIndex);
-			id = id.substring(0, atIndex);
-		}
-		Bundle bundle = Platform.getBundle(id);
-		Assert.assertNotNull("0.1 " + id, bundle);
-		URL url = bundle.getEntry("/");
-		Assert.assertNotNull("0.2 " + id, url);
-		try {
-			url = Platform.resolve(url);
-		} catch (IOException e) {
-			CoreTest.fail("0.3 " + url, e);
-		}
-		String externalForm;
-		if (url.getProtocol().equals("jar")) {
-			// if it is a JAR'd plug-in, URL is jar:file:/path/file.jar!/ - see bug 86195
-			String path = url.getPath();
-			// change it to be file:/path/file.jar
-			externalForm = path.substring(0, path.length() - 2);
-		} else
-			externalForm = url.toExternalForm();
-		// workaround for bug 88070		
-		externalForm = "reference:" + externalForm;
-		return externalForm + suffix;
-	}
-
-	public boolean isCascaded() {
-		return cascaded;
-	}
-
-	public boolean isReadOnly() {
-		return readOnly;
-	}
-
-	/**
-	 * Ensures setup uses this suite's instance location.
-	 * @throws SetupException
-	 */
-	protected Setup newSetup() throws SetupException {
-		Setup base = super.newSetup();
-		// the base implementation will have set this to the host configuration
-		base.setEclipseArgument(Setup.CONFIGURATION, null);
-		base.setSystemProperty(InternalPlatform.PROP_CONFIG_AREA, configurationPath.toOSString());
-		return base;
-	}
-
-	/**
-	 * Ensures workspace location is empty before running the first test, and after
-	 * running the last test. Also sorts the test cases to be run if this suite was
-	 * created by reifying a test case class.
-	 */
-	public void run(TestResult result) {
-		configurationPath.toFile().mkdirs();
-		try {
-			if (prime)
-				try {
-					createConfigINI();
-				} catch (IOException e) {
-					CoreTest.fail("0.1", e);
-				}
-			if (!shouldSort || isSharedSession()) {
-				// for shared sessions, we don't control the execution of test cases
-				super.run(result);
-				return;
-			}
-			// we have to sort the tests cases
-			Test[] allTests = getTests(true);
-			// now run the tests in order			
-			for (int i = 0; i < allTests.length && !result.shouldStop(); i++)
-				runTest(allTests[i], result);
-		} finally {
-			if (cleanUp)
-				FileSystemHelper.clear(configurationPath.toFile());
-		};
-
-	}
-
-	public void setCascaded(boolean cascaded) {
-		this.cascaded = cascaded;
-	}
-
-	public void setCleanup(boolean cleanUp) {
-		this.cleanUp = cleanUp;
-	}
-
-	public void setConfigurationPath(IPath configurationPath) {
-		this.configurationPath = configurationPath;
-	}
-
-	public void setPrime(boolean prime) {
-		this.prime = prime;
-	}
-
-	public void setReadOnly(boolean readOnly) {
-		this.readOnly = readOnly;
-	}
-
-	public static File getConfigurationDir() {
-		Location configurationLocation = Platform.getConfigurationLocation();
-		URL configurationURL = configurationLocation.getURL();
-		if (!"file".equals(configurationURL.getProtocol()))
-			// only works if configuration is file: based
-			throw new IllegalStateException();
-		File configurationDir = new File(configurationURL.getFile());
-		return configurationDir;
-	}
-
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/PerformanceSessionTestSuite.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/PerformanceSessionTestSuite.java
deleted file mode 100644
index 51e0a35..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/PerformanceSessionTestSuite.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.session;
-
-import junit.framework.*;
-import org.eclipse.core.tests.session.SetupManager.SetupException;
-
-/**
- * Runs perfomance test cases multiple times (if they don't fail), 
- * enabling assertions for the first run.
- */
-public class PerformanceSessionTestSuite extends SessionTestSuite {
-
-	/**
-	 * This custom test result allows multiple test runs to show up as a 
-	 * single run. 
-	 */
-	private static class ConsolidatedTestResult extends TestResult {
-		private boolean failed;
-		private int runs = 0;
-		private boolean started = false;
-		private TestResult target;
-		private int timesToRun;
-
-		public ConsolidatedTestResult(TestResult target, int timesToRun) {
-			this.target = target;
-			this.timesToRun = timesToRun;
-		}
-
-		public void addError(Test test, Throwable t) {
-			failed = true;
-			target.addError(test, t);
-		}
-
-		public void addFailure(Test test, AssertionFailedError t) {
-			failed = true;
-			target.addFailure(test, t);
-		}
-
-		public void endTest(Test test) {
-			runs++;
-			if (!failed && runs < timesToRun)
-				return;
-			target.endTest(test);
-		}
-
-		public boolean shouldStop() {
-			if (failed)
-				return true;
-			return target.shouldStop();
-		}
-
-		public void startTest(Test test) {
-			// should not try to start again ater failing once
-			if (failed)
-				throw new IllegalStateException();
-			if (started)
-				return;
-			started = true;
-			target.startTest(test);
-		}
-	}
-
-	public static final String PROP_PERFORMANCE = "perf_ctrl";
-
-	private int timesToRun;
-
-	public PerformanceSessionTestSuite(String pluginId, int timesToRun) {
-		super(pluginId);
-		this.timesToRun = timesToRun;
-	}
-
-	public PerformanceSessionTestSuite(String pluginId, int timesToRun, Class theClass) {
-		super(pluginId, theClass);
-		this.timesToRun = timesToRun;
-	}
-
-	public PerformanceSessionTestSuite(String pluginId, int timesToRun, Class theClass, String name) {
-		super(pluginId, theClass, name);
-		this.timesToRun = timesToRun;
-	}
-
-	public PerformanceSessionTestSuite(String pluginId, int timesToRun, String name) {
-		super(pluginId, name);
-		this.timesToRun = timesToRun;
-	}
-
-	protected void runSessionTest(TestDescriptor descriptor, TestResult result) {
-		try {
-			fillTestDescriptor(descriptor);
-		} catch (SetupException e) {
-			Throwable cause = e.getCause() == null ? e : e.getCause();
-			result.addError(descriptor.getTest(), cause);
-			return;
-		}
-		descriptor.getSetup().setSystemProperty("eclipse.perf.dbloc", System.getProperty("eclipse.perf.dbloc"));
-		descriptor.getSetup().setSystemProperty("eclipse.perf.config", System.getProperty("eclipse.perf.config"));
-		// run test cases n-1 times
-		ConsolidatedTestResult consolidated = new ConsolidatedTestResult(result, timesToRun);
-		for (int i = 0; !consolidated.shouldStop() && i < timesToRun - 1; i++)
-			descriptor.run(consolidated);
-		if (consolidated.shouldStop())
-			return;
-		// for the n-th run, enable assertions
-		descriptor.getSetup().setSystemProperty("eclipse.perf.assertAgainst", System.getProperty("eclipse.perf.assertAgainst"));
-		descriptor.run(consolidated);
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/ProcessController.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/ProcessController.java
deleted file mode 100644
index e9b16ca..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/ProcessController.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.session;
-
-import java.io.*;
-
-/**
- * Executes an external process synchronously, allowing the client to define 
- * a maximum amount of time for the process to complete.
- */
-public class ProcessController {
-	/**
-	 * Thrown when a process being executed exceeds the maximum amount
-	 * of time allowed for it to complete.
-	 */
-	public class TimeOutException extends Exception {
-		/**
-		 * All serializable objects should have a stable serialVersionUID
-		 */
-		private static final long serialVersionUID = 1L;
-
-		public TimeOutException() {
-			super();
-		}
-
-		public TimeOutException(String message) {
-			super(message);
-		}
-	}
-
-	private boolean finished;
-	private OutputStream forwardStdErr;
-	private InputStream forwardStdIn;
-	private OutputStream forwardStdOut;
-	private boolean killed;
-	private String[] params;
-	private Process process;
-	private long startupTime;
-	private long timeLimit;
-
-	/**
-	 * Constructs an instance of ProcessController. This does not creates an
-	 * OS process. <code>run()</code> does that.
-	 * 
-	 * @param timeout the maximum time the process should take to run 
-	 * @param params the parameters to be passed to the controlled process
-	 */
-	public ProcessController(long timeout, String[] params) {
-		this.timeLimit = timeout;
-		this.params = params;
-	}
-
-	private void controlProcess() {
-		new Thread("Process controller") {
-			public void run() {
-				while (!isFinished() && !timedOut())
-					synchronized (this) {
-						try {
-							wait(100);
-						} catch (InterruptedException e) {
-							break;
-						}
-					}
-				kill();
-			}
-		}.start();
-	}
-
-	/**
-	 * Causes the process to start executing. This call will block until the 
-	 * process has completed. If <code>timeout</code> is specified, the 
-	 * process will be interrupted if it takes more than the specified amount 
-	 * of time to complete, causing a <code>TimedOutException</code> to be thrown. 
-	 * Specifying zero as <code>timeout</code> means 
-	 * the process is not time constrained.  
-	 * 
-	 * @return the process exit value
-	 * @throws InterruptedException
-	 * @throws IOException
-	 * @throws TimeOutException if the process did not complete in time
-	 */
-	public int execute() throws InterruptedException, IOException, TimeOutException {
-		this.startupTime = System.currentTimeMillis();
-		// starts the process
-		process = Runtime.getRuntime().exec(params);
-		if (forwardStdErr != null)
-			forwardStream("stderr", process.getErrorStream(), forwardStdErr);
-		if (forwardStdOut != null)
-			forwardStream("stdout", process.getInputStream(), forwardStdOut);
-		if (forwardStdIn != null)
-			forwardStream("stdin", forwardStdIn, process.getOutputStream());
-		if (timeLimit > 0)
-			// ensures process execution time does not exceed the time limit 
-			controlProcess();
-		try {
-			return process.waitFor();
-		} finally {
-			markFinished();
-			if (wasKilled())
-				throw new TimeOutException();
-		}
-	}
-
-	/**
-	 * Forwards the process standard error output to the given output stream.
-	 * Must be called before execution has started.
-	 * 
-	 * @param err an output stream where to forward the process 
-	 * standard error output to
-	 */
-	public void forwardErrorOutput(OutputStream err) {
-		this.forwardStdErr = err;
-	}
-
-	/**
-	 * Forwards the process standard output to the given output stream.
-	 * Must be called before execution has started.
-	 * 
-	 * @param out an output stream where to forward the process 
-	 * standard output to
-	 */
-	public void forwardOutput(OutputStream out) {
-		this.forwardStdOut = out;
-	}
-
-	private void forwardStream(final String name, final InputStream in, final OutputStream out) {
-		new Thread("Stream forwarder [" + name + "]") {
-			public void run() {
-				try {
-					while (!isFinished()) {
-						while (in.available() > 0)
-							out.write(in.read());
-						synchronized (this) {
-							this.wait(100);
-						}
-					}
-					out.flush();
-				} catch (IOException ioe) {
-					//TODO only log/show if debug is on
-					ioe.printStackTrace();
-				} catch (InterruptedException e) {
-					//TODO only log/show if debug is on
-					e.printStackTrace();
-				}
-			}
-		}.start();
-	}
-
-	/**
-	 * Returns the controled process. Will return <code>null</code> before 
-	 * <code>execute</code> is called. 
-	 * 
-	 * @return the underlying process
-	 */
-	public Process getProcess() {
-		return process;
-	}
-
-	protected synchronized boolean isFinished() {
-		return finished;
-	}
-
-	/**
-	 * Kills the process. Does nothing if it has been finished already.
-	 */
-	public void kill() {
-		synchronized (this) {
-			if (isFinished())
-				return;
-			killed = true;
-		}
-		process.destroy();
-	}
-
-	private synchronized void markFinished() {
-		finished = true;
-		notifyAll();
-	}
-
-	protected synchronized boolean timedOut() {
-		return System.currentTimeMillis() - startupTime > timeLimit;
-	}
-
-	/**
-	 * Returns whether the process was killed due to a time out.
-	 * 
-	 * @return <code>true</code> if the process was killed, 
-	 * <code>false</code> if the completed normally
-	 */
-	public boolean wasKilled() {
-		return killed;
-	}
-
-	/**
-	 * Forwards the given input stream to the process standard input.
-	 * Must be called before execution has started.
-	 * 
-	 * @param in an input stream where the process 
-	 * standard input will be forwarded to 
-	 */
-	public void forwardInput(InputStream in) {
-		forwardStdIn = in;
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/RemoteAssertionFailedError.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/RemoteAssertionFailedError.java
deleted file mode 100644
index ec2639f..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/RemoteAssertionFailedError.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.session;
-
-import java.io.PrintStream;
-import java.io.PrintWriter;
-import junit.framework.AssertionFailedError;
-
-public class RemoteAssertionFailedError extends AssertionFailedError {
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	private Object stackText;
-	private String message;
-
-	public RemoteAssertionFailedError(String message, String stackText) {
-		this.message = message;
-		this.stackText = stackText;
-	}
-
-	public void printStackTrace(PrintWriter stream) {
-		stream.print(stackText);
-	}
-
-	public void printStackTrace(PrintStream stream) {
-		stream.print(stackText);
-	}
-
-	public String getMessage() {
-		return message;
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/RemoteTestException.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/RemoteTestException.java
deleted file mode 100644
index eff9be7..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/RemoteTestException.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.session;
-
-import java.io.PrintStream;
-import java.io.PrintWriter;
-
-public class RemoteTestException extends Exception {
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	private String stackText;
-	private String message;
-
-	public RemoteTestException(String message, String stackText) {
-		this.message = message;
-		this.stackText = stackText;
-	}
-
-	public void printStackTrace(PrintWriter stream) {
-		stream.print(stackText);
-	}
-
-	public void printStackTrace(PrintStream stream) {
-		stream.print(stackText);
-	}
-
-	public String getMessage() {
-		return message;
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/SessionTestRunner.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/SessionTestRunner.java
deleted file mode 100644
index 94f4f03..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/SessionTestRunner.java
+++ /dev/null
@@ -1,311 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.session;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.SocketException;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
-
-import junit.framework.Test;
-import junit.framework.TestResult;
-import junit.framework.TestSuite;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.tests.harness.CoreTest;
-
-/**
- * This class is responsible for launching JUnit tests on a separate Eclipse session and collect
- * the tests results sent back through a socket . 
- */
-public class SessionTestRunner {
-
-	class Result {
-		final static int ERROR = 2;
-		final static int FAILURE = 1;
-		final static int SUCCESS = 0;
-
-		String message;
-
-		String stackTrace;
-		Test test;
-		int type;
-
-		public Result(Test test) {
-			this.test = test;
-		}
-	}
-
-	/**
-	 * Collectors can be used a single time only.
-	 */
-	class ResultCollector implements Runnable {
-		private boolean finished;
-		private Result newResult;
-		private Map results = new HashMap();
-		ServerSocket serverSocket;
-		private boolean shouldRun = true;
-		private StringBuffer stack;
-		private TestResult testResult;
-		// tests completed during this session
-		private int testsRun;
-
-		ResultCollector(Test test, TestResult testResult) throws IOException {
-			serverSocket = new ServerSocket(0);
-			this.testResult = testResult;
-			initResults(test);
-		}
-
-		public int getPort() {
-			return serverSocket.getLocalPort();
-		}
-
-		public int getTestsRun() {
-			return testsRun;
-		}
-
-		private void initResults(Test test) {
-			if (test instanceof TestSuite) {
-				for (Enumeration e = ((TestSuite) test).tests(); e.hasMoreElements();)
-					initResults((Test) e.nextElement());
-				return;
-			}
-			results.put(test.toString(), new Result(test));
-		}
-
-		public synchronized boolean isFinished() {
-			return finished;
-		}
-
-		private synchronized void markAsFinished() {
-			finished = true;
-			notifyAll();
-		}
-
-		private String parseTestId(String message) {
-			if (message.length() == 0 || message.charAt(0) != '%')
-				return null;
-			int firstComma = message.indexOf(',');
-			if (firstComma == -1)
-				return null;
-			int secondComma = message.indexOf(',', firstComma + 1);
-			if (secondComma == -1)
-				secondComma = message.length();
-			return message.substring(firstComma + 1, secondComma);
-		}
-
-		private void processAvailableMessages(BufferedReader messageReader) throws IOException {
-			while (messageReader.ready()) {
-				String message = messageReader.readLine();
-				processMessage(message);
-			}
-		}
-
-		private void processMessage(String message) {
-			if (message.startsWith("%TESTS")) {
-				String testId = parseTestId(message);
-				if (!results.containsKey(testId))
-					throw new IllegalStateException("Unknown test id: " + testId);
-				newResult = (Result) results.get(testId);
-				testResult.startTest(newResult.test);
-				return;
-			}
-			if (message.startsWith("%TESTE")) {
-				if (newResult.type == Result.FAILURE)
-					testResult.addFailure(newResult.test, new RemoteAssertionFailedError(newResult.message, newResult.stackTrace));
-				else if (newResult.type == Result.ERROR)
-					testResult.addError(newResult.test, new RemoteTestException(newResult.message, newResult.stackTrace));
-				testResult.endTest(newResult.test);
-				testsRun++;
-				newResult = null;
-				return;
-			}
-			if (message.startsWith("%ERROR")) {
-				newResult.type = Result.ERROR;
-				newResult.message = "";
-				return;
-			}
-			if (message.startsWith("%FAILED")) {
-				newResult.type = Result.FAILURE;
-				newResult.message = "";
-				return;
-			}
-			if (message.startsWith("%TRACES")) {
-				// just create the string buffer that will hold all the frames of the stack trace
-				stack = new StringBuffer();
-				return;
-			}
-			if (message.startsWith("%TRACEE")) {
-				// stack trace fully read - fill the slot in the result object and reset the string buffer
-				newResult.stackTrace = stack.toString();
-				stack = null;
-				return;
-			}
-			if (message.startsWith("%"))
-				// ignore any other messages
-				return;
-			if (stack != null) {
-				// build the stack trace line by line
-				stack.append(message);
-				stack.append(System.getProperty("line.separator"));
-				return;
-			}
-		}
-
-		public void run() {
-			Socket connection = null;
-			try {
-				// someone asked us to stop before we could do anything
-				if (!shouldRun())
-					return;
-				try {
-					connection = serverSocket.accept();
-				} catch (SocketException se) {
-					if (!shouldRun())
-						// we have been finished without ever getting any connections
-						// no need to throw exception
-						return;
-					// something else stopped us
-					throw se;
-				}
-				BufferedReader messageReader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
-				try {
-					// main loop
-					while (true) {
-						synchronized (this) {
-							processAvailableMessages(messageReader);
-							if (!shouldRun())
-								return;
-							this.wait(150);
-						}
-					}
-				} catch (InterruptedException e) {
-					// not expected
-				}
-			} catch (IOException e) {
-				CoreTest.log(CoreTest.PI_HARNESS, e);
-			} finally {
-				// remember we are already finished
-				markAsFinished();
-				// cleanup
-				try {
-					if (connection != null && !connection.isClosed())
-						connection.close();
-				} catch (IOException e) {
-					CoreTest.log(CoreTest.PI_HARNESS, e);
-				}
-				try {
-					if (serverSocket != null && !serverSocket.isClosed())
-						serverSocket.close();
-				} catch (IOException e) {
-					CoreTest.log(CoreTest.PI_HARNESS, e);
-				}
-			}
-		}
-
-		private synchronized boolean shouldRun() {
-			return shouldRun;
-		}
-
-		/*
-		 * Politely asks the collector thread to stop and wait until it is finished.
-		 */
-		public void shutdown() {
-			// ask the collector to stop
-			synchronized (this) {
-				if (isFinished())
-					return;
-				shouldRun = false;
-				try {
-					serverSocket.close();
-				} catch (IOException e) {
-					CoreTest.log(CoreTest.PI_HARNESS, e);
-				}
-				notifyAll();
-			}
-			// wait until the collector is done
-			synchronized (this) {
-				while (!isFinished())
-					try {
-						wait(100);
-					} catch (InterruptedException e) {
-						// we don't care
-					}
-			}
-		}
-
-	}
-
-	/**
-	 * Runs the setup. Returns a status object indicating the outcome of the operation.
-	 *   
-	 * @return a status object indicating the outcome 
-	 */
-	private IStatus launch(Setup setup) {
-		Assert.isNotNull(setup.getEclipseArgument(Setup.APPLICATION), "test application is not defined");
-		Assert.isNotNull(setup.getEclipseArgument("testpluginname"), "test plug-in id not defined");
-		Assert.isTrue(setup.getEclipseArgument("classname") != null ^ setup.getEclipseArgument("test") != null, "either a test suite or a test case must be provided");
-		// to prevent changes in the protocol from breaking us, 
-		// force the version we know we can work with 
-		setup.setEclipseArgument("version", "3");
-		IStatus outcome = Status.OK_STATUS;
-		try {
-			int returnCode = setup.run();
-			if (returnCode != 0)
-				outcome = new Status(IStatus.WARNING, Platform.PI_RUNTIME, returnCode, "Process returned non-zero code: " + returnCode + "\n\tCommand: " + setup, null);
-		} catch (Exception e) {
-			outcome = new Status(IStatus.ERROR, Platform.PI_RUNTIME, -1, "Error running process\n\tCommand: " + setup, e);
-		}
-		return outcome;
-	}
-
-	/**
-	 * Runs the test described  in a separate session.
-	 */
-	public final void run(Test test, TestResult result, Setup setup, boolean crashTest) {
-		ResultCollector collector = null;
-		try {
-			collector = new ResultCollector(test, result);
-		} catch (IOException e) {
-			result.addError(test, e);
-			return;
-		}
-		setup.setEclipseArgument("port", Integer.toString(collector.getPort()));
-		new Thread(collector, "Test result collector").start();
-		IStatus status = launch(setup);
-		collector.shutdown();
-		// ensure the session ran without any errors
-		if (!status.isOK()) {
-			CoreTest.log(CoreTest.PI_HARNESS, status);
-			if (status.getSeverity() == IStatus.ERROR) {
-				result.addError(test, new CoreException(status));
-				return;
-			}
-		}
-		if (collector.getTestsRun() == 0) {
-			if (crashTest)
-				// explicitly end test since process crashed before test could finish
-				result.endTest(test);
-			else
-				result.addError(test, new Exception("Test did not run: " + test.toString()));
-		} else if (crashTest)
-			result.addError(test, new Exception("Should have caused crash"));
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/SessionTestSuite.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/SessionTestSuite.java
deleted file mode 100644
index cafb8d7..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/SessionTestSuite.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.session;
-
-import java.util.*;
-import junit.framework.*;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.tests.session.SetupManager.SetupException;
-
-public class SessionTestSuite extends TestSuite {
-	public static final String CORE_TEST_APPLICATION = "org.eclipse.pde.junit.runtime.coretestapplication"; //$NON-NLS-1$	
-	public static final String UI_TEST_APPLICATION = "org.eclipse.pde.junit.runtime.uitestapplication"; //$NON-NLS-1$	
-	protected String applicationId = CORE_TEST_APPLICATION;
-	private Set crashTests = new HashSet();
-	private Set localTests = new HashSet();
-	// the id for the plug-in whose classloader ought to be used to load the test case class
-	protected String pluginId;
-	private Setup setup;
-	// true if test cases should run in the same (shared) session
-	private boolean sharedSession;
-	protected SessionTestRunner testRunner;
-
-	public SessionTestSuite(String pluginId) {
-		super();
-		this.pluginId = pluginId;
-	}
-
-	public SessionTestSuite(String pluginId, Class theClass) {
-		super(theClass);
-		this.pluginId = pluginId;
-	}
-
-	public SessionTestSuite(String pluginId, Class theClass, String name) {
-		super(theClass, name);
-		this.pluginId = pluginId;
-	}
-
-	public SessionTestSuite(String pluginId, String name) {
-		super(name);
-		this.pluginId = pluginId;
-	}
-
-	/**
-	 * Crash tests are not expected to complete (they fail if they do).
-	 */
-	public void addCrashTest(TestCase test) {
-		crashTests.add(test);
-		super.addTest(test);
-	}
-
-	/**
-	 * Adds a local test, a test that is run locally, not in a separate session.
-	 */
-	public void addLocalTest(TestCase test) {
-		localTests.add(test);
-		super.addTest(test);
-	}
-
-	protected void fillTestDescriptor(TestDescriptor test) throws SetupException {
-		if (test.getApplicationId() == null)
-			test.setApplicationId(applicationId);
-		if (test.getPluginId() == null)
-			test.setPluginId(pluginId);
-		if (test.getSetup() == null)
-			test.setSetup(getSetup());
-		if (!test.isCrashTest() && crashTests.contains(test.getTest()))
-			test.setCrashTest(true);
-		test.setTestRunner(getTestRunner());
-	}
-
-	public String getApplicationId() {
-		return applicationId;
-	}
-
-	public Setup getSetup() throws SetupException {
-		if (setup == null)
-			setup = newSetup();
-		return setup;
-	}
-
-	protected SessionTestRunner getTestRunner() {
-		if (testRunner == null)
-			testRunner = new SessionTestRunner();
-		return testRunner;
-	}
-
-	protected Test[] getTests(boolean sort) {
-		Test[] allTests = new Test[testCount()];
-		Enumeration e = tests();
-		for (int i = 0; i < allTests.length; i++)
-			allTests[i] = (Test) e.nextElement();
-		if (sort)
-			Arrays.sort(allTests, new Comparator() {
-				public int compare(Object o1, Object o2) {
-					return ((TestCase) o1).getName().compareTo(((TestCase) o2).getName());
-				}
-			});
-		return allTests;
-	}
-
-	private boolean isLocalTest(Test test) {
-		return localTests.contains(test);
-	}
-
-	public boolean isSharedSession() {
-		return sharedSession;
-	}
-
-	protected Setup newSetup() throws SetupException {
-		return SetupManager.getInstance().getDefaultSetup();
-	}
-
-	/**
-	 * Runs this session test suite.  
-	 */
-	public void run(TestResult result) {
-		if (!sharedSession) {
-			super.run(result);
-			return;
-		}
-		// running this session test suite in shared mode
-		Enumeration tests = tests();
-		Assert.isTrue(tests.hasMoreElements(), "A single test suite must be provided");
-		Test onlyTest = (Test) tests.nextElement();
-		Assert.isTrue(!tests.hasMoreElements(), "Only a single test suite can be run");
-		Assert.isTrue(onlyTest instanceof TestSuite, "Only test suites can be run in shared session mode");
-		TestSuite nested = (TestSuite) onlyTest;
-		try {
-			// in shared mode no TestDescriptors are used, need to set up environment ourselves
-			Setup localSetup = (Setup) getSetup().clone();
-			localSetup.setEclipseArgument(Setup.APPLICATION, applicationId);
-			localSetup.setEclipseArgument("testpluginname", pluginId);
-			localSetup.setEclipseArgument("classname", (nested.getName() != null ? nested.getName() : nested.getClass().getName()));
-			// run the session tests
-			new SessionTestRunner().run(this, result, localSetup, false);
-		} catch (SetupException e) {
-			result.addError(this, e.getCause());
-			return;
-		}
-	}
-
-	protected void runSessionTest(TestDescriptor test, TestResult result) {
-		try {
-			fillTestDescriptor(test);
-			test.run(result);
-		} catch (SetupException e) {
-			result.addError(test.getTest(), e.getCause());
-		}
-	}
-
-	public final void runTest(Test test, TestResult result) {
-		if (sharedSession)
-			// just for safety, prevent anybody from calling this API - we don't run individual tests when in shared mode
-			throw new UnsupportedOperationException();
-
-		if (test instanceof TestDescriptor)
-			runSessionTest((TestDescriptor) test, result);
-		else if (test instanceof TestCase) {
-			if (isLocalTest(test))
-				// local, ordinary test - just run it
-				test.run(result);
-			else
-				runSessionTest(new TestDescriptor((TestCase) test), result);
-		} else if (test instanceof TestSuite)
-			// find and run the test cases that make up the suite
-			runTestSuite((TestSuite) test, result);
-		else
-			// we don't support session tests for things that are not TestCases 
-			// or TestSuites (e.g. TestDecorators) 
-			test.run(result);
-	}
-
-	/*
-	 * Traverses the test suite to find individual test cases to be run with the SessionTestRunner.
-	 */
-	protected void runTestSuite(TestSuite suite, TestResult result) {
-		for (Enumeration e = suite.tests(); e.hasMoreElements();) {
-			if (result.shouldStop())
-				break;
-			Test test = (Test) e.nextElement();
-			runTest(test, result);
-		}
-	}
-
-	public void setApplicationId(String applicationId) {
-		this.applicationId = applicationId;
-	}
-
-	void setSetup(Setup setup) {
-		this.setup = setup;
-	}
-
-	public void setSharedSession(boolean sharedSession) {
-		this.sharedSession = sharedSession;
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/Setup.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/Setup.java
deleted file mode 100644
index 4d66633..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/Setup.java
+++ /dev/null
@@ -1,484 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.session;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.*;
-import org.eclipse.core.internal.runtime.InternalPlatform;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.tests.session.ProcessController.TimeOutException;
-
-/*
- * Implementation note: vmArguments and eclipseArguments are HashMap (and not
- * just Map) because we are interested in features that are specific to HashMap
- * (is Cloneable, allows null values).
- */
-public class Setup implements Cloneable {
-
-	public static final String APPLICATION = "application";
-
-	private static final String ARCH = "arch";
-
-	public static final String CONFIGURATION = "configuration";
-
-	public static final String DATA = "data";
-
-	public static final String DEBUG = "debug";
-
-	private static final int DEFAULT_TIMEOUT = 0;
-
-	public static final String DEV = "dev";
-
-	public static final String INSTALL = "install";
-
-	private static final String NL = "nl";
-
-	private static final String OS = "os";
-
-	public static final String VM = "vm";
-
-	private static final String WS = "ws";
-	
-	private static final String PROP_BOOT_DELEGATION = "org.osgi.framework.bootdelegation";
-
-	public static String getDefaultArchOption() {
-		return System.getProperty(InternalPlatform.PROP_ARCH);
-	}
-
-	public static String getDefaultConfiguration() {
-		return System.getProperty(InternalPlatform.PROP_CONFIG_AREA);
-	}
-
-	public static String getDefaultDebugOption() {
-		return System.getProperty(InternalPlatform.PROP_DEBUG);
-	}
-
-	public static String getDefaultDevOption() {
-		return System.getProperty(InternalPlatform.PROP_DEV);
-	}
-
-	public static String getDefaultInstallLocation() {
-		String currentInstall = System.getProperty(InternalPlatform.PROP_INSTALL_AREA);
-		if (currentInstall != null)
-			try {
-				return new URI(currentInstall).getPath();
-			} catch (URISyntaxException e) {
-				// nothing to be done
-			}
-		return null;
-	}
-
-	public static String getDefaultInstanceLocation() {
-		return new File(System.getProperty("java.io.tmpdir"), "workspace").toString();
-	}
-
-	public static String getDefaultNLOption() {
-		return System.getProperty(InternalPlatform.PROP_NL);
-	}
-
-	public static String getDefaultOSOption() {
-		return System.getProperty(InternalPlatform.PROP_OS);
-	}
-
-	/**
-	 * Creates a setup containing default settings. The default settings will
-	 * vary depending on the running environment.
-	 * 
-	 * @see #getDefaultConfiguration()
-	 * @see #getDefaultDebugOption()
-	 * @see #getDefaultDevOption()
-	 * @see #getDefaultInstallLocation()
-	 * @see #getDefaultInstanceLocation()
-	 * @see #getDefaultVMLocation()
-	 * @return a setup with all default settings
-	 */
-	static Setup getDefaultSetup(SetupManager manager) {
-		Setup defaultSetup = new Setup(manager);
-		// see bug 93343
-		defaultSetup.setSystemProperty(PROP_BOOT_DELEGATION, System.getProperty(PROP_BOOT_DELEGATION));
-		defaultSetup.setSystemProperty(InternalPlatform.PROP_CONSOLE_LOG, System.getProperty(InternalPlatform.PROP_CONSOLE_LOG, "true"));
-		if (Setup.getDefaultVMLocation() != null)
-			defaultSetup.setEclipseArgument(VM, Setup.getDefaultVMLocation());
-		if (Setup.getDefaultConfiguration() != null)
-			defaultSetup.setEclipseArgument(CONFIGURATION, Setup.getDefaultConfiguration());
-		if (Setup.getDefaultDebugOption() != null)
-			defaultSetup.setSystemProperty(InternalPlatform.PROP_DEBUG, Setup.getDefaultDebugOption());
-		if (Setup.getDefaultDevOption() != null)
-			defaultSetup.setEclipseArgument(DEV, Setup.getDefaultDevOption());
-		if (Setup.getDefaultInstallLocation() != null)
-			defaultSetup.setEclipseArgument(INSTALL, Setup.getDefaultInstallLocation());
-		if (Setup.getDefaultInstanceLocation() != null)
-			defaultSetup.setEclipseArgument(DATA, Setup.getDefaultInstanceLocation());
-		if (Setup.getDefaultArchOption() != null)
-			defaultSetup.setEclipseArgument(ARCH, Setup.getDefaultArchOption());
-		String defaultOS = Setup.getDefaultOSOption();
-		if (defaultOS != null) {
-			defaultSetup.setEclipseArgument(OS, defaultOS);
-			if (Platform.OS_MACOSX.equals(defaultOS))
-				// see bug 98508 
-				defaultSetup.setVMArgument("XstartOnFirstThread", "");
-		}
-		if (Setup.getDefaultWSOption() != null)
-			defaultSetup.setEclipseArgument(WS, Setup.getDefaultWSOption());
-		if (Setup.getDefaultNLOption() != null)
-			defaultSetup.setEclipseArgument(NL, Setup.getDefaultNLOption());
-		defaultSetup.setTimeout(DEFAULT_TIMEOUT);
-		return defaultSetup;
-	}
-
-	public static String getDefaultVMLocation() {
-		String javaVM = System.getProperty("eclipse.vm");
-		if (javaVM != null)
-			return javaVM;
-		javaVM = System.getProperty("java.home");
-		if (javaVM == null)
-			return null;
-		// XXX: this is a hack and will not work with some VMs...
-		return new File(new File(javaVM, "bin"), "java").toString();
-	}
-
-	public static String getDefaultWSOption() {
-		return System.getProperty(InternalPlatform.PROP_WS);
-	}
-
-	private String[] baseSetups;
-
-	private HashMap eclipseArguments = new HashMap();
-
-	private String id;
-
-	private SetupManager manager;
-
-	private String name;
-
-	private String[] requiredSets;
-
-	private HashMap systemProperties = new HashMap();
-
-	private int timeout;
-
-	private HashMap vmArguments = new HashMap();
-
-	public Setup(SetupManager manager) {
-		this.manager = manager;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Object#clone()
-	 */
-	public Object clone() {
-		Setup clone = null;
-		try {
-			clone = (Setup) super.clone();
-			// ensure we don't end up sharing references to mutable objects
-			clone.eclipseArguments = (HashMap) eclipseArguments.clone();
-			clone.vmArguments = (HashMap) vmArguments.clone();
-			clone.systemProperties = (HashMap) systemProperties.clone();
-		} catch (CloneNotSupportedException e) {
-			// just does not happen: we do implement Cloneable
-		}
-		return clone;
-	}
-
-	private void fillClassPath(List params) {
-		if (vmArguments.containsKey("cp") || vmArguments.containsKey("classpath"))
-			// classpath was specified as VM argument
-			return;
-		String inheritedClassPath = System.getProperty("java.class.path");
-		if (inheritedClassPath == null) {
-			String installLocation = getEclipseArgument(INSTALL);
-			if (installLocation == null)
-				throw new IllegalStateException("Classpath could not be computed");
-			inheritedClassPath = new File(installLocation, "startup.jar").toString();
-		}
-		params.add("-classpath");
-		params.add(inheritedClassPath);
-	}
-
-	public void fillCommandLine(List commandLine) {
-		String vmLocation = getEclipseArgument(VM);
-		if (vmLocation == null)
-			throw new IllegalStateException("VM location not set");
-		commandLine.add(vmLocation);
-		fillClassPath(commandLine);
-		fillVMArgs(commandLine);
-		fillSystemProperties(commandLine);
-		commandLine.add("org.eclipse.core.launcher.Main");
-		fillEclipseArgs(commandLine);
-	}
-
-	private void fillEclipseArgs(List params) {
-		for (Iterator i = eclipseArguments.entrySet().iterator(); i.hasNext();) {
-			Map.Entry entry = (Map.Entry) i.next();
-			params.add('-' + (String) entry.getKey());
-			if (entry.getValue() != null && ((String) entry.getValue()).length() > 0)
-				params.add(entry.getValue());
-		}
-	}
-
-	private void fillSystemProperties(List command) {
-		for (Iterator iter = systemProperties.entrySet().iterator(); iter.hasNext();) {
-			Map.Entry entry = (Map.Entry) iter.next();
-			// null-valued properties are ignored
-			if (entry.getValue() == null)
-				continue;
-			StringBuffer property = new StringBuffer("-D");
-			property.append(entry.getKey());
-			if (((String) entry.getValue()).length() > 0) {
-				property.append('=');
-				property.append(entry.getValue());
-			}
-			command.add(property.toString());
-		}
-	}
-
-	private void fillVMArgs(List params) {
-		for (Iterator i = vmArguments.entrySet().iterator(); i.hasNext();) {
-			Map.Entry entry = (Map.Entry) i.next();
-			params.add('-' + (String) entry.getKey());
-			if (entry.getValue() != null && ((String) entry.getValue()).length() > 0)
-				params.add(entry.getValue());
-		}
-	}
-
-	String[] getBaseSetups() {
-		return baseSetups;
-	}
-
-	public String[] getCommandLine() {
-		List commandLine = new ArrayList();
-		fillCommandLine(commandLine);
-		return (String[]) commandLine.toArray(new String[commandLine.size()]);
-	}
-
-	public String getEclipseArgsLine() {
-		List eclipseArgs = new ArrayList();
-		fillEclipseArgs(eclipseArgs);
-		StringBuffer result = new StringBuffer();
-		for (Iterator i = eclipseArgs.iterator(); i.hasNext();) {
-			result.append(i.next());
-			result.append(' ');
-		}
-		return result.length() > 0 ? result.substring(0, result.length() - 1) : null;
-	}
-
-	public String getEclipseArgument(String key) {
-		return (String) eclipseArguments.get(key);
-	}
-
-	public Map getEclipseArguments() {
-		return (Map) eclipseArguments.clone();
-	}
-
-	public String getId() {
-		return id;
-	}
-
-	public String getName() {
-		return name;
-	}
-
-	String[] getRequiredSets() {
-		return requiredSets;
-	}
-
-	public Map getSystemProperties() {
-		return (Map) systemProperties.clone();
-	}
-
-	public String getSystemPropertiesLine() {
-		List sysProperties = new ArrayList();
-		fillSystemProperties(sysProperties);
-		StringBuffer result = new StringBuffer();
-		for (Iterator i = sysProperties.iterator(); i.hasNext();) {
-			result.append(i.next());
-			result.append(' ');
-		}
-		return result.length() > 0 ? result.substring(0, result.length() - 1) : null;
-	}
-
-	public int getTimeout() {
-		return timeout;
-	}
-
-	public String getVMArgsLine() {
-		List vmArgs = new ArrayList();
-		fillVMArgs(vmArgs);
-		StringBuffer result = new StringBuffer();
-		for (Iterator i = vmArgs.iterator(); i.hasNext();) {
-			result.append(i.next());
-			result.append(' ');
-		}
-		return result.length() > 0 ? result.substring(0, result.length() - 1) : null;
-	}
-
-	public String getVMArgument(String key) {
-		return (String) vmArguments.get(key);
-	}
-
-	public Map getVMArguments() {
-		return (Map) vmArguments.clone();
-	}
-
-	public boolean isA(String baseOptionSet) {
-		if (baseOptionSet.equals(id))
-			return true;
-		if (baseSetups == null)
-			return false;
-		for (int i = 0; i < baseSetups.length; i++) {
-			Setup base = manager.getSetup(baseSetups[i]);
-			if (base != null && base.isA(baseOptionSet))
-				return true;
-		}
-		return false;
-	}
-
-	public boolean isSatisfied(String[] availableSets) {
-		for (int i = 0; i < requiredSets.length; i++) {
-			boolean satisfied = false;
-			for (int j = 0; !satisfied && j < availableSets.length; j++) {
-				Setup available = manager.getSetup(availableSets[j]);
-				if (available != null && available.isA(requiredSets[i]))
-					satisfied = true;
-			}
-			if (!satisfied)
-				return false;
-		}
-		return true;
-	}
-
-	public void merge(Setup variation) {
-		eclipseArguments.putAll(variation.eclipseArguments);
-		vmArguments.putAll(variation.vmArguments);
-		systemProperties.putAll(variation.systemProperties);
-	}
-
-	public int run() throws InterruptedException, IOException, TimeOutException {
-		if (SetupManager.inDebugMode()) {
-			System.out.print("Command line: ");
-			System.out.println(toCommandLineString());
-		}
-		ProcessController process = new ProcessController(getTimeout(), getCommandLine());
-		process.forwardErrorOutput(System.err);
-		process.forwardOutput(System.out);
-		//if necessary to interact with the spawned process, this would have
-		// to be done
-		//process.forwardInput(System.in);
-		return process.execute();
-	}
-
-	void setBaseSetups(String[] baseSetups) {
-		this.baseSetups = baseSetups;
-	}
-
-	public void setEclipseArgument(String key, String value) {
-		if (value == null)
-			eclipseArguments.remove(key);
-		else
-			eclipseArguments.put(key, value);
-	}
-
-	public void setEclipseArguments(Map newArguments) {
-		if (newArguments == null)
-			eclipseArguments.clear();
-		else
-			eclipseArguments.putAll(newArguments);
-	}
-
-	public void setId(String id) {
-		this.id = id;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-
-	void setRequiredSets(String[] requiredSets) {
-		this.requiredSets = requiredSets;
-	}
-
-	public void setSystemProperties(Map newProperties) {
-		if (newProperties == null)
-			systemProperties.clear();
-		else
-			systemProperties.putAll(newProperties);
-	}
-
-	public void setSystemProperty(String key, String value) {
-		if (value == null)
-			systemProperties.remove(key);
-		else
-			systemProperties.put(key, value);
-	}
-
-	public void setTimeout(int timeout) {
-		this.timeout = timeout;
-	}
-
-	public void setVMArgument(String key, String value) {
-		if (value == null)
-			vmArguments.remove(key);
-		else
-			vmArguments.put(key, value);
-	}
-
-	public void setVMArguments(Map newArguments) {
-		if (newArguments == null)
-			vmArguments.clear();
-		else
-			vmArguments.putAll(newArguments);
-	}
-
-	public String toCommandLineString() {
-		String[] commandLine = getCommandLine();
-		StringBuffer result = new StringBuffer();
-		result.append("[\n");
-		for (int i = 0; i < commandLine.length; i++) {
-			result.append('\t');
-			result.append(commandLine[i]);
-			result.append('\n');
-		}
-		result.append(']');
-		return result.toString();
-	}
-
-	public String toString() {
-		StringBuffer result = new StringBuffer();
-		if (id != null || name != null) {
-			if (id != null) {
-				result.append(id);
-				result.append(' ');
-			}
-			if (name != null) {
-				if (name != null) {
-					result.append("(");
-					result.append(name);
-					result.append(") ");
-				}
-			}
-			result.append("= ");
-		}
-		result.append("[");
-		result.append("\n\teclipseArguments: ");
-		result.append(eclipseArguments);
-		result.append("\n\tvmArguments: ");
-		result.append(vmArguments);
-		result.append("\n\tsystemProperties: ");
-		result.append(systemProperties);
-		result.append("\n]");
-		return result.toString();
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/SetupManager.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/SetupManager.java
deleted file mode 100644
index 2637b93..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/SetupManager.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.session;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.*;
-import javax.xml.parsers.*;
-import org.eclipse.core.runtime.Platform;
-import org.w3c.dom.*;
-import org.xml.sax.SAXException;
-
-public class SetupManager {
-	public class SetupException extends Exception {
-		/**
-		 * All serializable objects should have a stable serialVersionUID
-		 */
-		private static final long serialVersionUID = 1L;
-
-		public SetupException(String message, Throwable cause) {
-			super(message, cause);
-		}
-
-		public SetupException(String message) {
-			super(message);
-		}
-	}
-
-	private static SetupManager instance;
-	private static final String SETUP_DEBUG = "setup.debug";
-	private static final String SETUP_FILES = "setup.files";
-	private static final String SETUP_OPTIONS = "setup.options";
-	private static final String SETUP_OVERRIDE_ECLIPSEARGS = "setup.override.eclipseArgs";
-	private static final String SETUP_OVERRIDE_SYSTEMPROPERTIES = "setup.override.systemProperties";
-	private static final String SETUP_OVERRIDE_VMARGS = "setup.override.vmArgs";
-	private String defaultOptionSetIds = "";
-	private Map setupById;
-	private Collection setups;
-
-	private static boolean contains(Object[] set, Object element) {
-		for (int i = 0; i < set.length; i++)
-			if (element.equals(set[i]))
-				return true;
-		return false;
-	}
-
-	public synchronized static SetupManager getInstance() throws SetupException {
-		if (instance != null)
-			return instance;
-		instance = new SetupManager();
-		return instance;
-	}
-
-	public static boolean inDebugMode() {
-		return Boolean.getBoolean(SETUP_DEBUG);
-	}
-
-	public static void main(String[] args) throws Exception {
-		SetupManager manager = SetupManager.getInstance();
-		System.out.println(manager.getDefaultSetup());
-	}
-
-	static String[] parseItems(String string) {
-		if (string == null)
-			return new String[0];
-		StringTokenizer tokenizer = new StringTokenizer(string, ","); //$NON-NLS-1$
-		if (!tokenizer.hasMoreTokens())
-			return new String[0];
-		String first = tokenizer.nextToken().trim();
-		if (!tokenizer.hasMoreTokens())
-			return new String[] {first};
-		ArrayList items = new ArrayList();
-		items.add(first);
-		do {
-			items.add(tokenizer.nextToken().trim());
-		} while (tokenizer.hasMoreTokens());
-		return (String[]) items.toArray(new String[items.size()]);
-	}
-
-	protected SetupManager() throws SetupException {
-		setups = new ArrayList();
-		setupById = new HashMap();
-		try {
-			loadSetups();
-		} catch (SetupException e) {
-			throw e;
-		} catch (Exception e) {
-			throw new SetupException("Problems initializing SetupManager", e);
-		}
-	}
-
-	public Setup buildSetup(String[] optionSets) {
-		Setup defaultSetup = Setup.getDefaultSetup(this);
-		for (Iterator i = setups.iterator(); i.hasNext();) {
-			Setup customSetup = (Setup) i.next();
-			if ((customSetup.getId() == null || contains(optionSets, customSetup.getId())) && customSetup.isSatisfied(optionSets))
-				defaultSetup.merge(customSetup);
-		}
-		defaultSetup.setEclipseArguments(parseOptions(System.getProperty(SETUP_OVERRIDE_ECLIPSEARGS)));
-		defaultSetup.setVMArguments(parseOptions(System.getProperty(SETUP_OVERRIDE_VMARGS)));
-		defaultSetup.setSystemProperties(parseOptions(System.getProperty(SETUP_OVERRIDE_SYSTEMPROPERTIES)));
-		return defaultSetup;
-	}
-
-	private String getAttribute(NamedNodeMap attributes, String name) {
-		Node selected = attributes.getNamedItem(name);
-		return selected == null ? null : selected.getNodeValue();
-	}
-
-	private String[] getDefaultOptionSets() {
-		return parseItems(System.getProperty(SETUP_OPTIONS, defaultOptionSetIds));
-	}
-
-	/**
-	 * Returns a brand new setup object configured according to the current
-	 * default setup settings.
-	 * 
-	 * @return a new setup object
-	 */
-	public Setup getDefaultSetup() {
-		return buildSetup(getDefaultOptionSets());
-	}
-
-	public Setup getSetup(String id) {
-		return (Setup) setupById.get(id);
-	}
-
-	private void loadEclipseArgument(Setup newSetup, Element toParse) {
-		newSetup.setEclipseArgument(toParse.getAttribute("option"), toParse.getAttribute("value"));
-	}
-
-	private void loadProperty(Setup newSetup, Element toParse) {
-		newSetup.setSystemProperty(toParse.getAttribute("key"), toParse.getAttribute("value"));
-	}
-
-	private void loadSetup(Element markup) {
-		NamedNodeMap attributes = markup.getAttributes();
-		if (attributes == null)
-			return;
-		Setup newSetup = new Setup(this);
-		newSetup.setId(getAttribute(attributes, "id"));
-		newSetup.setName(getAttribute(attributes, "name"));
-		String timeout = getAttribute(attributes, "timeout");
-		newSetup.setBaseSetups(parseItems(getAttribute(attributes, "base")));
-		newSetup.setRequiredSets(parseItems(getAttribute(attributes, "with")));
-
-		if (timeout != null)
-			newSetup.setTimeout(Integer.parseInt(timeout));
-		NodeList children = markup.getChildNodes();
-		for (int i = 0; i < children.getLength(); i++) {
-			Node next = children.item(i);
-			if (!(next instanceof Element))
-				continue;
-			Element toParse = (Element) next;
-			if (toParse.getTagName().equals("eclipseArg"))
-				loadEclipseArgument(newSetup, toParse);
-			else if (toParse.getTagName().equals("vmArg"))
-				loadVMArgument(newSetup, toParse);
-			else if (toParse.getTagName().equals("systemProperty"))
-				loadProperty(newSetup, toParse);
-		}
-		setups.add(newSetup);
-		if (newSetup.getId() != null)
-			setupById.put(newSetup.getId(), newSetup);
-	}
-
-	private void loadSetups() throws ParserConfigurationException, FactoryConfigurationError, SAXException, IOException, SetupException {
-		String setupFilesProperty = System.getProperty(SETUP_FILES);
-		boolean defaultLocation = false;
-		if (setupFilesProperty == null) {
-			setupFilesProperty = "default-setup.xml";
-			defaultLocation = true;
-		}
-		String[] setupFileNames = parseItems(setupFilesProperty);
-		File[] setupFiles = new File[setupFileNames.length];
-		int found = 0;
-		for (int i = 0; i < setupFiles.length; i++) {
-			setupFiles[found] = new File(setupFileNames[i]);
-			if (!setupFiles[found].isFile()) {
-				if (!defaultLocation)
-					// warn if user-provided location does not exist
-					System.out.println("No setup files found at '" + setupFiles[i].getAbsolutePath() + "'. ");
-				continue;
-			}
-			found++;
-		}
-		if (found == 0) {
-			if (Platform.isRunning()) {
-				// No setup descriptions found, only the default setup will be available
-				return;
-			}
-			// no setup files found, and we are not running in Eclipse...  
-			throw new SetupException("No setup descriptions found. Ensure you are specifying the path for an existing setup file (e.g. -Dsetup.files=<setup-file-location1>[...,<setup-file-locationN>])");
-		}
-		DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
-		for (int fileIndex = 0; fileIndex < found; fileIndex++) {
-			Document doc = docBuilder.parse(setupFiles[fileIndex]);
-			Element root = doc.getDocumentElement();
-			String setupDefaultOptionSets = root.getAttribute("default");
-			if (setupDefaultOptionSets != null)
-				defaultOptionSetIds = defaultOptionSetIds == null ? setupDefaultOptionSets : (defaultOptionSetIds + ',' + setupDefaultOptionSets);
-			NodeList optionSets = root.getChildNodes();
-			for (int i = 0; i < optionSets.getLength(); i++) {
-				Node next = optionSets.item(i);
-				if (!(next instanceof Element))
-					continue;
-				Element toParse = (Element) next;
-				if (!toParse.getTagName().equals("optionSet"))
-					continue;
-				loadSetup(toParse);
-			}
-		}
-	}
-
-	private void loadVMArgument(Setup newSetup, Element toParse) {
-		newSetup.setVMArgument(toParse.getAttribute("option"), toParse.getAttribute("value"));
-	}
-
-	private Map parseOptions(String options) {
-		if (options == null)
-			return Collections.EMPTY_MAP;
-		Map result = new HashMap();
-		StringTokenizer tokenizer = new StringTokenizer(options.trim(), ";");
-		while (tokenizer.hasMoreTokens()) {
-			String option = tokenizer.nextToken();
-			int separatorIndex = option.indexOf('=');
-			if (separatorIndex == -1 || separatorIndex == option.length() - 1)
-				// property with no value defined
-				result.put(option, "");
-			else {
-				String key = option.substring(0, separatorIndex);
-				String value = option.substring(separatorIndex + 1);
-				result.put(key, value);
-			}
-		}
-		return result;
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/TestDescriptor.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/TestDescriptor.java
deleted file mode 100644
index 6c4d4b5..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/TestDescriptor.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.session;
-
-import junit.framework.*;
-
-/**
- * A test descriptor represents a test case. It is used by the session 
- * test framework to run tests remotely. Using test descriptors, one 
- * can run any test case provided by any plug-in by just providing the
- * plug-in id, the test class and the test case name.  
- */
-public class TestDescriptor extends TestCase {
-	private String applicationId;
-	private boolean crashTest;
-	private String method;
-	private String pluginId;
-	private Setup setup;
-	private Test test;
-	private String testClass;
-	private SessionTestRunner testRunner;
-
-	public TestDescriptor(String testClass, String method) {
-		this.testClass = testClass;
-		this.method = method;
-	}
-
-	public TestDescriptor(TestCase test) {
-		this.testClass = test.getClass().getName();
-		this.method = test.getName();
-		this.test = test;
-	}
-
-	public int countTestCases() {
-		return 1;
-	}
-
-	public String getApplicationId() {
-		return applicationId;
-	}
-
-	public String getName() {
-		return getTestMethod();
-	}
-
-	public String getPluginId() {
-		return pluginId;
-	}
-
-	public Setup getSetup() {
-		return setup;
-	}
-
-	public Test getTest() {
-		return test == null ? this : test;
-	}
-
-	public String getTestClass() {
-		return testClass;
-	}
-
-	public String getTestMethod() {
-		return method;
-	}
-
-	public SessionTestRunner getTestRunner() {
-		return testRunner;
-	}
-
-	public boolean isCrashTest() {
-		return crashTest;
-	}
-
-	public void run(TestResult result) {
-		Setup localSetup = (Setup) setup.clone();
-		localSetup.setEclipseArgument(Setup.APPLICATION, applicationId);
-		localSetup.setEclipseArgument("testpluginname", pluginId);
-		localSetup.setEclipseArgument("test", testClass + ':' + method);
-		getTestRunner().run(getTest(), result, localSetup, crashTest);
-	}
-
-	public void setApplicationId(String applicationId) {
-		this.applicationId = applicationId;
-	}
-
-	public void setCrashTest(boolean crashTest) {
-		this.crashTest = crashTest;
-	}
-
-	public void setPluginId(String pluginId) {
-		this.pluginId = pluginId;
-	}
-
-	public void setSetup(Setup setup) {
-		this.setup = setup == null ? null : (Setup) setup.clone();
-	}
-
-	public void setTestRunner(SessionTestRunner testRunner) {
-		this.testRunner = testRunner;
-	}
-
-	public String toString() {
-		return getName() + "(" + getTestClass() + ")";
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/UIPerformanceSessionTestSuite.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/UIPerformanceSessionTestSuite.java
deleted file mode 100644
index 4f7c211..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/UIPerformanceSessionTestSuite.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.session;
-
-import org.eclipse.core.tests.session.SetupManager.SetupException;
-
-/**
- * TODO It should live in the UI tests instead.
- */
-public class UIPerformanceSessionTestSuite extends PerformanceSessionTestSuite {
-
-	public UIPerformanceSessionTestSuite(String pluginId, int timesToRun) {
-		super(pluginId, timesToRun);
-		setApplicationId(SessionTestSuite.UI_TEST_APPLICATION);
-	}
-
-	public UIPerformanceSessionTestSuite(String pluginId, int timesToRun, Class theClass) {
-		super(pluginId, timesToRun, theClass);
-		setApplicationId(SessionTestSuite.UI_TEST_APPLICATION);
-	}
-
-	public UIPerformanceSessionTestSuite(String pluginId, int timesToRun, Class theClass, String name) {
-		super(pluginId, timesToRun, theClass, name);
-		setApplicationId(SessionTestSuite.UI_TEST_APPLICATION);
-	}
-
-	public UIPerformanceSessionTestSuite(String pluginId, int timesToRun, String name) {
-		super(pluginId, timesToRun, name);
-		setApplicationId(SessionTestSuite.UI_TEST_APPLICATION);
-	}
-
-	/**
-	 * Ensures setup uses this suite's instance location.
-	 * @throws SetupException
-	 */
-	protected Setup newSetup() throws SetupException {
-		Setup base = super.newSetup();
-		base.setSystemProperty("org.eclipse.ui.testsWaitForEarlyStartup", "false");
-		return base;
-	}
-}
\ No newline at end of file
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/WorkspaceSessionTestSuite.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/WorkspaceSessionTestSuite.java
deleted file mode 100644
index e223d36..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/WorkspaceSessionTestSuite.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.session;
-
-import junit.framework.Test;
-import junit.framework.TestResult;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.tests.harness.FileSystemHelper;
-import org.eclipse.core.tests.session.SetupManager.SetupException;
-
-public class WorkspaceSessionTestSuite extends SessionTestSuite {
-
-	private IPath instanceLocation = FileSystemHelper.getRandomLocation(FileSystemHelper.getTempDir());
-	// should the test cases be run in alphabetical order?
-	private boolean shouldSort;
-
-	public WorkspaceSessionTestSuite(String pluginId) {
-		super(pluginId);
-	}
-
-	public WorkspaceSessionTestSuite(String pluginId, Class theClass) {
-		super(pluginId, theClass);
-		this.shouldSort = true;
-	}
-
-	public WorkspaceSessionTestSuite(String pluginId, Class theClass, String name) {
-		super(pluginId, theClass, name);
-		this.shouldSort = true;
-	}
-
-	public WorkspaceSessionTestSuite(String pluginId, String name) {
-		super(pluginId, name);
-	}
-
-	/**
-	 * Ensures setup uses this suite's instance location.
-	 * @throws SetupException
-	 */
-	protected Setup newSetup() throws SetupException {
-		Setup base = super.newSetup();
-		base.setEclipseArgument(Setup.DATA, instanceLocation.toOSString());
-		return base;
-	}
-
-	/**
-	 * Ensures workspace location is empty before running the first test, and after
-	 * running the last test. Also sorts the test cases to be run if this suite was
-	 * created by reifying a test case class.
-	 */
-	public void run(TestResult result) {
-		try {
-			if (!shouldSort) {
-				super.run(result);
-				return;
-			}
-			// we have to sort the tests cases 			
-			Test[] allTests = getTests(true);
-			// now run the tests in order
-			for (int i = 0; i < allTests.length && !result.shouldStop(); i++)
-				runTest(allTests[i], result);
-		} finally {
-			FileSystemHelper.clear(instanceLocation.toFile());
-		}
-
-	}
-
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/MultipleRunsTest.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/MultipleRunsTest.java
deleted file mode 100644
index ca7895b..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/MultipleRunsTest.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.session.samples;
-
-import junit.framework.*;
-import org.eclipse.core.tests.harness.CoreTest;
-import org.eclipse.core.tests.session.*;
-import org.eclipse.test.performance.*;
-
-public class MultipleRunsTest extends TestCase {
-	public void testMultipleRuns() throws SetupManager.SetupException {
-		// the test case to run multiple times
-		TestDescriptor test = new TestDescriptor(SampleSessionTest.class.getName(), "testApplicationStartup");
-		test.setApplicationId(SessionTestSuite.CORE_TEST_APPLICATION);
-		test.setPluginId(CoreTest.PI_HARNESS);
-		test.setTestRunner(new SessionTestRunner());
-		// setup the command line to be passed to the multiple runs so it has the right system properties			
-		test.setSetup(SetupManager.getInstance().getDefaultSetup());
-		test.getSetup().setSystemProperty("eclipse.perf.dbloc", System.getProperty("eclipse.perf.dbloc"));
-		test.getSetup().setSystemProperty("eclipse.perf.config", System.getProperty("eclipse.perf.config"));		
-		// runs the test case several times - only to collect data, won't do any assertions
-		TestResult result = new TestResult();
-		for (int i = 0; i < 5; i++) {
-			test.run(result);
-			if (result.failureCount() > 0) {
-				((TestFailure) result.failures().nextElement()).thrownException().printStackTrace();
-				return;
-			}
-			if (result.errorCount() > 0) {
-				((TestFailure) result.errors().nextElement()).thrownException().printStackTrace();
-				return;
-			}
-		}
-		// create a performance meter whose scenario id matches the one used in the test case run
-		// our convention: scenario IDs are <test case class name> + '.' + <test case method name> 
-		PerformanceMeter meter = Performance.getDefault().createPerformanceMeter(test.getTestClass() + '.' + test.getTestMethod());
-		// finally do the assertion
-		Performance.getDefault().assertPerformanceInRelativeBand(meter, Dimension.ELAPSED_PROCESS, -50, 5);
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/MultipleRunsTest2.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/MultipleRunsTest2.java
deleted file mode 100644
index 496cb28..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/MultipleRunsTest2.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.session.samples;
-
-import junit.framework.*;
-import org.eclipse.core.tests.harness.CoreTest;
-import org.eclipse.core.tests.session.PerformanceSessionTestSuite;
-import org.eclipse.core.tests.session.TestDescriptor;
-
-public class MultipleRunsTest2 extends TestCase {
-	public static Test suite() {
-		PerformanceSessionTestSuite suite = new PerformanceSessionTestSuite(CoreTest.PI_HARNESS, 10);
-		suite.addTest(new TestDescriptor(SampleSessionTest.class.getName(), "testApplicationStartup"));
-		return suite;
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/SameSessionTest.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/SameSessionTest.java
deleted file mode 100644
index 98a70bb..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/SameSessionTest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.session.samples;
-
-import junit.framework.*;
-
-public class SameSessionTest extends TestCase {
-
-	static String lastTestCase;
-
-	public SameSessionTest(String name) {
-		super(name);
-	}
-
-	public void test1() {
-		lastTestCase = getName();
-	}
-
-	public void test2() {
-		assertEquals("test1", lastTestCase);
-		lastTestCase = getName();
-	}
-
-	public void test3() {
-		assertEquals("test2", lastTestCase);
-	}
-
-	public static Test suite() {
-		TestSuite root = new TestSuite("root");
-		TestSuite node1 = new TestSuite("node1");
-		node1.addTest(new SameSessionTest("test1"));
-		root.addTest(node1);
-		TestSuite node2 = new TestSuite("node2");
-		root.addTest(node2);
-		TestSuite node21 = new TestSuite("node21");
-		node2.addTest(node21);
-		node21.addTest(new SameSessionTest("test2"));
-		node2.addTest(new SameSessionTest("test3"));
-		return root;
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/SampleCrashTest.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/SampleCrashTest.java
deleted file mode 100644
index a4c1c42..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/SampleCrashTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.session.samples;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import org.eclipse.core.tests.harness.CoreTest;
-import org.eclipse.core.tests.session.SessionTestSuite;
-
-public class SampleCrashTest extends TestCase {
-	public SampleCrashTest(String methodName) {
-		super(methodName);
-	}
-
-	public void test1() {
-		// Everything is fine...
-		System.out.println(getName());
-	}
-
-	public void test2() {
-		// crash
-		System.out.println(getName());
-		System.exit(2);
-	}
-
-	public void test3() {
-		// Everything is again...
-		System.out.println(getName());
-	}
-
-	public static Test suite() {
-		SessionTestSuite sameSession = new SessionTestSuite(CoreTest.PI_HARNESS);
-		sameSession.addTest(new SampleCrashTest("test1"));
-		sameSession.addCrashTest(new SampleCrashTest("test2"));
-		sameSession.addTest(new SampleCrashTest("test3"));
-		return sameSession;
-	}
-
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/SampleSessionTest.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/SampleSessionTest.java
deleted file mode 100644
index 7eff16f..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/SampleSessionTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.session.samples;
-
-import junit.framework.*;
-import org.eclipse.core.tests.harness.CoreTest;
-import org.eclipse.core.tests.session.SessionTestSuite;
-import org.eclipse.test.performance.*;
-
-public class SampleSessionTest extends TestCase {
-	public SampleSessionTest(String methodName) {
-		super(methodName);
-	}
-
-	public void testBasic1() {
-		// Everything is fine...
-	}
-
-	public void testBasic2() {
-		fail("Breaking the test " + System.currentTimeMillis());
-	}
-
-	public void testBasic3() {
-		throw new RuntimeException("Will break the test as well " + System.currentTimeMillis());
-	}
-
-	public void testApplicationStartup() {
-		PerformanceMeter meter = Performance.getDefault().createPerformanceMeter(getClass().getName() + ".testPerformance");
-		try {
-			meter.stop();
-			meter.commit();
-			Performance.getDefault().assertPerformanceInRelativeBand(meter, Dimension.ELAPSED_PROCESS, -50, 5);
-		} finally {
-			meter.dispose();
-		}
-	}
-
-	public static Test suite() {
-		TestSuite sameSession = new SessionTestSuite(CoreTest.PI_HARNESS, SampleSessionTest.class);
-		return sameSession;
-	}
-
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/SampleTests.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/SampleTests.java
deleted file mode 100644
index 62f4478..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/SampleTests.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.session.samples;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.core.tests.harness.CoreTest;
-import org.eclipse.core.tests.session.SessionTestSuite;
-
-public class SampleTests extends TestSuite {
-	public SampleTests() {
-		addTest(SampleSessionTest.suite());
-		addTest(UISampleSessionTest.suite());
-		TestSuite another = new SessionTestSuite(CoreTest.PI_HARNESS);
-		another.addTestSuite(SampleSessionTest.class);
-		addTest(another);
-		// these tests should run in the same session (don't add to a non-shared session test suite)
-		SessionTestSuite shared = new SessionTestSuite(CoreTest.PI_HARNESS);
-		shared.addTestSuite(SameSessionTest.class);
-		shared.setSharedSession(true);
-		addTest(shared);
-		// play with a crash test
-		addTest(SampleCrashTest.suite());
-	}
-
-	public static Test suite() {
-		return new SampleTests();
-	}
-}
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/UISampleSessionTest.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/UISampleSessionTest.java
deleted file mode 100644
index cc4cea3..0000000
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/samples/UISampleSessionTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.tests.session.samples;
-
-import java.util.Date;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import org.eclipse.core.tests.harness.CoreTest;
-import org.eclipse.core.tests.session.SessionTestSuite;
-import org.eclipse.test.performance.*;
-
-public class UISampleSessionTest extends TestCase {
-	public UISampleSessionTest(String methodName) {
-		super(methodName);
-	}
-	
-	/**
-	 * Print a debug message to the console. 
-	 * Pre-pend the message with the current date and the name of the current thread.
-	 */
-	public static void message(String message) {
-		StringBuffer buffer = new StringBuffer();
-		buffer.append(new Date(System.currentTimeMillis()));
-		buffer.append(" - ["); //$NON-NLS-1$
-		buffer.append(Thread.currentThread().getName());
-		buffer.append("] "); //$NON-NLS-1$
-		buffer.append(message);
-		System.out.println(buffer.toString());
-	}
-
-	public void testApplicationStartup() {
-		message("Running " + getName());
-		PerformanceMeter meter = Performance.getDefault().createPerformanceMeter(getClass().getName() + ".UIStartup");
-		try {
-			meter.stop();
-			meter.commit();
-			Performance.getDefault().assertPerformanceInRelativeBand(meter, Dimension.ELAPSED_PROCESS, -50, 5);
-		} finally {
-			meter.dispose();
-		}
-	}
-
-	public static Test suite() {
-		SessionTestSuite suite = new SessionTestSuite(CoreTest.PI_HARNESS);
-		suite.setApplicationId(SessionTestSuite.UI_TEST_APPLICATION);
-		for (int i = 0; i < 3; i++)
-			suite.addTest(new UISampleSessionTest("testApplicationStartup"));
-		return suite;
-	}
-
-}