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.cl