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

Sprout from master 2006-02-17 15:20:45 UTC DJ Houghton <dj> 'Fixed javadoc.'
Delete:
    bundles/org.eclipse.equinox.app/.classpath
    bundles/org.eclipse.equinox.app/.cvsignore
    bundles/org.eclipse.equinox.app/.project
    bundles/org.eclipse.equinox.app/.settings/org.eclipse.core.resources.prefs
    bundles/org.eclipse.equinox.app/.settings/org.eclipse.jdt.core.prefs
    bundles/org.eclipse.equinox.app/.settings/org.eclipse.jdt.ui.prefs
    bundles/org.eclipse.equinox.app/.settings/org.eclipse.pde.core.prefs
    bundles/org.eclipse.equinox.app/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.app/about.html
    bundles/org.eclipse.equinox.app/build.properties
    bundles/org.eclipse.equinox.app/plugin.properties
    bundles/org.eclipse.equinox.app/plugin.xml
    bundles/org.eclipse.equinox.app/schema/applications.exsd
    bundles/org.eclipse.equinox.app/schema/containers.exsd
    bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/app/IAppContext.java
    bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/app/IApplication.java
    bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/app/IContainer.java
    bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/Activator.java
    bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/AppCommands.java
    bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/AppPersistenceUtil.java
    bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/ContainerManager.java
    bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/EclipseAppDescriptor.java
    bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/EclipseAppHandle.java
    bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/EclipseScheduledApplication.java
    bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/ErrorApplication.java
    bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/MainThreadApplication.java
    bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/MainThreadContainer.java
    bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/Messages.java
    bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/SingletonContainer.java
    bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/messages.properties
    bundles/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationAdminPermission.java
    bundles/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationDescriptor.java
    bundles/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationException.java
    bundles/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationHandle.java
    bundles/org.eclipse.equinox.app/src/org/osgi/service/application/ScheduledApplication.java
    bundles/org.eclipse.equinox.common/.classpath
    bundles/org.eclipse.equinox.common/.cvsignore
    bundles/org.eclipse.equinox.common/.project
    bundles/org.eclipse.equinox.common/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.common/about.html
    bundles/org.eclipse.equinox.common/build.properties
    bundles/org.eclipse.equinox.common/plugin.properties
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/Activator.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/AdapterManager.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/CommonMessages.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/CommonOSGiUtils.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/DataArea.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/DevClassPathHelper.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/FindSupport.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/IAdapterFactoryExt.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/IRuntimeConstants.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/ListenerList.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/MessageResourceBundle.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/MetaDataKeeper.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/ReferenceHashSet.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/ResourceTranslator.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/RuntimeLog.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/commonMessages.properties
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/package.html
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/Assert.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/AssertionFailedException.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/BundleFinder.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/CoreException.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/FileLocator.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IAdaptable.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IAdapterFactory.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IAdapterManager.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IBundleGroup.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IBundleGroupProvider.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/ILogListener.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IPath.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IProgressMonitor.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IProgressMonitorWithBlocking.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/ISafeRunnable.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IStatus.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/ListenerList.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/MultiStatus.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/NullProgressMonitor.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/OperationCanceledException.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/Path.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/PlatformObject.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/PluginVersionIdentifier.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/ProgressMonitorWrapper.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/QualifiedName.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/SafeRunner.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/Status.java
    bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/SubProgressMonitor.java
    bundles/org.eclipse.equinox.device/.classpath
    bundles/org.eclipse.equinox.device/.cvsignore
    bundles/org.eclipse.equinox.device/.project
    bundles/org.eclipse.equinox.device/.settings/org.eclipse.jdt.core.prefs
    bundles/org.eclipse.equinox.device/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.device/about.html
    bundles/org.eclipse.equinox.device/build.properties
    bundles/org.eclipse.equinox.device/plugin.properties
    bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/Activator.java
    bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/DeviceMsg.java
    bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/DeviceTracker.java
    bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/DriverLocatorTracker.java
    bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/DriverSelectorTracker.java
    bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/DriverTracker.java
    bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/ExternalMessages.properties
    bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/LogMessages.properties
    bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/LogTracker.java
    bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/LogTrackerMsg.java
    bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/Match.java
    bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/SecureAction.java
    bundles/org.eclipse.equinox.ds/.classpath
    bundles/org.eclipse.equinox.ds/.cvsignore
    bundles/org.eclipse.equinox.ds/.project
    bundles/org.eclipse.equinox.ds/.settings/org.eclipse.jdt.core.prefs
    bundles/org.eclipse.equinox.ds/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.ds/about.html
    bundles/org.eclipse.equinox.ds/build.properties
    bundles/org.eclipse.equinox.ds/plugin.properties
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/AbstractReflector.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/Activator.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/FrameworkHook.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/Log.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/instance/BuildDispose.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/instance/InstanceProcess.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/instance/InvokeMethod.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/instance/RegisterComponentService.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/model/ComponentDescription.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/model/ComponentDescriptionCache.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/model/ComponentDescriptionProp.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/model/ImplementationDescription.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/model/PropertyDescription.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/model/PropertyResourceDescription.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/model/PropertyValueDescription.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/model/ProvideDescription.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/model/ReferenceDescription.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/model/ServiceDescription.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/parser/ComponentElement.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/parser/ImplementationElement.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/parser/Parser.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/parser/ParserConstants.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/parser/ParserHandler.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/parser/PropertiesElement.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/parser/PropertyElement.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/parser/ProvideElement.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/parser/ReferenceElement.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/parser/ServiceElement.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/resolver/CircularityException.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/resolver/Reference.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/resolver/Resolver.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/service/ComponentContextImpl.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/service/ComponentFactoryImpl.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/service/ComponentInstanceImpl.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/tracker/BundleTracker.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/tracker/BundleTrackerCustomizer.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/workqueue/WorkDispatcher.java
    bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/ds/workqueue/WorkQueue.java
    bundles/org.eclipse.equinox.event/.classpath
    bundles/org.eclipse.equinox.event/.cvsignore
    bundles/org.eclipse.equinox.event/.project
    bundles/org.eclipse.equinox.event/.settings/org.eclipse.jdt.core.prefs
    bundles/org.eclipse.equinox.event/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.event/about.html
    bundles/org.eclipse.equinox.event/build.properties
    bundles/org.eclipse.equinox.event/plugin.properties
    bundles/org.eclipse.equinox.event/src/org/eclipse/equinox/event/Activator.java
    bundles/org.eclipse.equinox.event/src/org/eclipse/equinox/event/EventAdminImpl.java
    bundles/org.eclipse.equinox.event/src/org/eclipsei/equinox/event/mapper/BundleEventAdapter.java
    bundles/org.eclipse.equinox.event/src/org/eclipsei/equinox/event/mapper/ConfigurationEventAdapter.java
    bundles/org.eclipse.equinox.event/src/org/eclipsei/equinox/event/mapper/Constants.java
    bundles/org.eclipse.equinox.event/src/org/eclipsei/equinox/event/mapper/EventAdapter.java
    bundles/org.eclipse.equinox.event/src/org/eclipsei/equinox/event/mapper/EventRedeliverer.java
    bundles/org.eclipse.equinox.event/src/org/eclipsei/equinox/event/mapper/FrameworkEventAdapter.java
    bundles/org.eclipse.equinox.event/src/org/eclipsei/equinox/event/mapper/LogEntryAdapter.java
    bundles/org.eclipse.equinox.event/src/org/eclipsei/equinox/event/mapper/LogReaderServiceListener.java
    bundles/org.eclipse.equinox.event/src/org/eclipsei/equinox/event/mapper/LogReaderServiceTracker.java
    bundles/org.eclipse.equinox.event/src/org/eclipsei/equinox/event/mapper/ServiceEventAdapter.java
    bundles/org.eclipse.equinox.event/src/org/eclipsei/equinox/event/mapper/UPnPEventAdapter.java
    bundles/org.eclipse.equinox.event/src/org/eclipsei/equinox/event/mapper/UserAdminEventAdapter.java
    bundles/org.eclipse.equinox.event/src/org/eclipsei/equinox/event/mapper/WireAdminEventAdapter.java
    bundles/org.eclipse.equinox.http/.classpath
    bundles/org.eclipse.equinox.http/.cvsignore
    bundles/org.eclipse.equinox.http/.project
    bundles/org.eclipse.equinox.http/.settings/org.eclipse.jdt.core.prefs
    bundles/org.eclipse.equinox.http/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.http/OSGI-INF/l10n/bundle_en.properties
    bundles/org.eclipse.equinox.http/OSGI-INF/metatype/METADATA.XML
    bundles/org.eclipse.equinox.http/about.html
    bundles/org.eclipse.equinox.http/build.properties
    bundles/org.eclipse.equinox.http/plugin.properties
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/Activator.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/DefaultHttpContext.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/ExternalMessages.properties
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/Http.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/HttpConfiguration.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/HttpDate.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/HttpListener.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/HttpMsg.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/HttpSecurityTracker.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/HttpServerSocket.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/HttpService.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/HttpSocket.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/HttpThread.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/HttpThreadPool.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/LogMessages.properties
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/LogTracker.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/LogTrackerMsg.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/Registration.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/ResourceRegistration.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/ResourceUnavailableException.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/SSLTracker.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/SecureAction.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/ServletRegistration.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/StaticDataReader.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/Tokenizer.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/URI.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/mime.types
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/servlet/HttpServletRequestImpl.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/servlet/HttpServletResponseImpl.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/servlet/HttpSessionContextImpl.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/servlet/HttpSessionImpl.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/servlet/RequestDispatcherImpl.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/servlet/ServletConfigImpl.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/servlet/ServletContextImpl.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/servlet/ServletInputStreamImpl.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/servlet/ServletOutputStreamImpl.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/servlet/ServletPrintWriter.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/http/status.codes
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/socket/ServerSocketInterface.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/socket/SocketInterface.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/socket/https/HttpsServerSocket.java
    bundles/org.eclipse.equinox.http/src/org/eclipse/equinox/socket/https/HttpsSocket.java
    bundles/org.eclipse.equinox.log/.classpath
    bundles/org.eclipse.equinox.log/.cvsignore
    bundles/org.eclipse.equinox.log/.project
    bundles/org.eclipse.equinox.log/.settings/org.eclipse.jdt.core.prefs
    bundles/org.eclipse.equinox.log/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.log/OSGI-INF/l10n/bundle_en.properties
    bundles/org.eclipse.equinox.log/OSGI-INF/metatype/METADATA.XML
    bundles/org.eclipse.equinox.log/about.html
    bundles/org.eclipse.equinox.log/build.properties
    bundles/org.eclipse.equinox.log/plugin.properties
    bundles/org.eclipse.equinox.log/src/org/eclipse/equinox/log/Activator.java
    bundles/org.eclipse.equinox.log/src/org/eclipse/equinox/log/ExternalMessages.properties
    bundles/org.eclipse.equinox.log/src/org/eclipse/equinox/log/LogEntry.java
    bundles/org.eclipse.equinox.log/src/org/eclipse/equinox/log/LogMsg.java
    bundles/org.eclipse.equinox.log/src/org/eclipse/equinox/log/LogReaderService.java
    bundles/org.eclipse.equinox.log/src/org/eclipse/equinox/log/LogReaderServiceFactory.java
    bundles/org.eclipse.equinox.log/src/org/eclipse/equinox/log/LogServiceFactory.java
    bundles/org.eclipse.equinox.log/src/org/eclipse/equinox/log/LogServiceImpl.java
    bundles/org.eclipse.equinox.log/src/org/eclipse/equinox/log/LoggedException.java
    bundles/org.eclipse.equinox.metatype/.classpath
    bundles/org.eclipse.equinox.metatype/.cvsignore
    bundles/org.eclipse.equinox.metatype/.project
    bundles/org.eclipse.equinox.metatype/.settings/org.eclipse.jdt.core.prefs
    bundles/org.eclipse.equinox.metatype/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.metatype/about.html
    bundles/org.eclipse.equinox.metatype/build.properties
    bundles/org.eclipse.equinox.metatype/plugin.properties
    bundles/org.eclipse.equinox.metatype/src/org/eclipse/equinox/metatype/Activator.java
    bundles/org.eclipse.equinox.metatype/src/org/eclipse/equinox/metatype/AttributeDefinitionImpl.java
    bundles/org.eclipse.equinox.metatype/src/org/eclipse/equinox/metatype/DataParser.java
    bundles/org.eclipse.equinox.metatype/src/org/eclipse/equinox/metatype/ExternalMessages.properties
    bundles/org.eclipse.equinox.metatype/src/org/eclipse/equinox/metatype/FragmentUtils.java
    bundles/org.eclipse.equinox.metatype/src/org/eclipse/equinox/metatype/Icon.java
    bundles/org.eclipse.equinox.metatype/src/org/eclipse/equinox/metatype/LocalizationElement.java
    bundles/org.eclipse.equinox.metatype/src/org/eclipse/equinox/metatype/Logging.java
    bundles/org.eclipse.equinox.metatype/src/org/eclipse/equinox/metatype/MetaTypeInformationImpl.java
    bundles/org.eclipse.equinox.metatype/src/org/eclipse/equinox/metatype/MetaTypeMsg.java
    bundles/org.eclipse.equinox.metatype/src/org/eclipse/equinox/metatype/MetaTypeProviderImpl.java
    bundles/org.eclipse.equinox.metatype/src/org/eclipse/equinox/metatype/MetaTypeProviderTracker.java
    bundles/org.eclipse.equinox.metatype/src/org/eclipse/equinox/metatype/MetaTypeServiceImpl.java
    bundles/org.eclipse.equinox.metatype/src/org/eclipse/equinox/metatype/ObjectClassDefinitionImpl.java
    bundles/org.eclipse.equinox.metatype/src/org/eclipse/equinox/metatype/ValueTokenizer.java
    bundles/org.eclipse.equinox.preferences/.classpath
    bundles/org.eclipse.equinox.preferences/.cvsignore
    bundles/org.eclipse.equinox.preferences/.options
    bundles/org.eclipse.equinox.preferences/.project
    bundles/org.eclipse.equinox.preferences/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.preferences/about.html
    bundles/org.eclipse.equinox.preferences/build.properties
    bundles/org.eclipse.equinox.preferences/plugin.properties
    bundles/org.eclipse.equinox.preferences/plugin.xml
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/AbstractScope.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/Activator.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/Base64.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/ConfigurationPreferences.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/DefaultPreferences.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/EclipsePreferences.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/ExportedPreferences.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/ILegacyPreferences.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/IPreferencesConstants.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/ImmutableMap.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/InstancePreferences.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/ListenerRegistry.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/LookupOrder.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/OSGiPreferencesServiceImpl.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/OSGiPreferencesServiceManager.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/PreferencesOSGiUtils.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/PreferencesService.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/PrefsMessages.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/RootPreferences.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/StringPool.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/messages.properties
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/runtime/preferences/AbstractPreferenceInitializer.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/runtime/preferences/ConfigurationScope.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/runtime/preferences/DefaultScope.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/runtime/preferences/IEclipsePreferences.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/runtime/preferences/IExportedPreferences.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/runtime/preferences/IPreferenceFilter.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/runtime/preferences/IPreferenceNodeVisitor.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/runtime/preferences/IPreferencesService.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/runtime/preferences/IProductPreferencesService.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/runtime/preferences/IScope.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/runtime/preferences/IScopeContext.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/runtime/preferences/InstanceScope.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/runtime/preferences/PreferenceFilterEntry.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/runtime/preferences/PreferenceModifyListener.java
    bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/runtime/preferences/package.html
    bundles/org.eclipse.equinox.preferences/src/org/osgi/service/prefs/BackingStoreException.java
    bundles/org.eclipse.equinox.preferences/src/org/osgi/service/prefs/Preferences.java
    bundles/org.eclipse.equinox.preferences/src/org/osgi/service/prefs/PreferencesService.java
    bundles/org.eclipse.equinox.useradmin/.classpath
    bundles/org.eclipse.equinox.useradmin/.cvsignore
    bundles/org.eclipse.equinox.useradmin/.project
    bundles/org.eclipse.equinox.useradmin/.settings/org.eclipse.jdt.core.prefs
    bundles/org.eclipse.equinox.useradmin/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.useradmin/about.html
    bundles/org.eclipse.equinox.useradmin/build.properties
    bundles/org.eclipse.equinox.useradmin/plugin.properties
    bundles/org.eclipse.equinox.useradmin/src/org/eclipse/equinox/useradmin/Activator.java
    bundles/org.eclipse.equinox.useradmin/src/org/eclipse/equinox/useradmin/Authorization.java
    bundles/org.eclipse.equinox.useradmin/src/org/eclipse/equinox/useradmin/ExternalMessages.properties
    bundles/org.eclipse.equinox.useradmin/src/org/eclipse/equinox/useradmin/Group.java
    bundles/org.eclipse.equinox.useradmin/src/org/eclipse/equinox/useradmin/LogMessages.properties
    bundles/org.eclipse.equinox.useradmin/src/org/eclipse/equinox/useradmin/LogTracker.java
    bundles/org.eclipse.equinox.useradmin/src/org/eclipse/equinox/useradmin/LogTrackerMsg.java
    bundles/org.eclipse.equinox.useradmin/src/org/eclipse/equinox/useradmin/Role.java
    bundles/org.eclipse.equinox.useradmin/src/org/eclipse/equinox/useradmin/User.java
    bundles/org.eclipse.equinox.useradmin/src/org/eclipse/equinox/useradmin/UserAdmin.java
    bundles/org.eclipse.equinox.useradmin/src/org/eclipse/equinox/useradmin/UserAdminEventProducer.java
    bundles/org.eclipse.equinox.useradmin/src/org/eclipse/equinox/useradmin/UserAdminHashtable.java
    bundles/org.eclipse.equinox.useradmin/src/org/eclipse/equinox/useradmin/UserAdminMsg.java
    bundles/org.eclipse.equinox.useradmin/src/org/eclipse/equinox/useradmin/UserAdminStore.java
    bundles/org.eclipse.equinox.wireadmin/.classpath
    bundles/org.eclipse.equinox.wireadmin/.cvsignore
    bundles/org.eclipse.equinox.wireadmin/.project
    bundles/org.eclipse.equinox.wireadmin/.settings/org.eclipse.jdt.core.prefs
    bundles/org.eclipse.equinox.wireadmin/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.wireadmin/about.html
    bundles/org.eclipse.equinox.wireadmin/build.properties
    bundles/org.eclipse.equinox.wireadmin/plugin.properties
    bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/wireadmin/Activator.java
    bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/wireadmin/ConsumerCustomizer.java
    bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/wireadmin/ConsumersCustomizer.java
    bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/wireadmin/ExternalMessages.properties
    bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/wireadmin/LogMessages.properties
    bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/wireadmin/LogTracker.java
    bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/wireadmin/LogTrackerMsg.java
    bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/wireadmin/ProducerCustomizer.java
    bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/wireadmin/ProducersCustomizer.java
    bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/wireadmin/ReadOnlyDictionary.java
    bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/wireadmin/Wire.java
    bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/wireadmin/WireAdmin.java
    bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/wireadmin/WireAdminEventProducer.java
    bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/wireadmin/WireAdminMsg.java
    bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/wireadmin/WireAdminStore.java
diff --git a/bundles/org.eclipse.equinox.app/.classpath b/bundles/org.eclipse.equinox.app/.classpath
deleted file mode 100755
index 751c8f2..0000000
--- a/bundles/org.eclipse.equinox.app/.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.equinox.app/.cvsignore b/bundles/org.eclipse.equinox.app/.cvsignore
deleted file mode 100755
index ba077a4..0000000
--- a/bundles/org.eclipse.equinox.app/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/bundles/org.eclipse.equinox.app/.project b/bundles/org.eclipse.equinox.app/.project
deleted file mode 100755
index c1246c3..0000000
--- a/bundles/org.eclipse.equinox.app/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.equinox.app</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.equinox.app/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.equinox.app/.settings/org.eclipse.core.resources.prefs
deleted file mode 100755
index 16532b2..0000000
--- a/bundles/org.eclipse.equinox.app/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue May 25 15:00:03 EDT 2004
-encoding/<project>=ISO-8859-1
-eclipse.preferences.version=1
diff --git a/bundles/org.eclipse.equinox.app/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.app/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100755
index 9509abc..0000000
--- a/bundles/org.eclipse.equinox.app/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,77 +0,0 @@
-#Wed Dec 14 13:44:11 CST 2005
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.equinox.app/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.equinox.app/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100755
index a0bbd3f..0000000
--- a/bundles/org.eclipse.equinox.app/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Wed Dec 14 13:44:11 CST 2005
-eclipse.preferences.version=1
-internal.default.compliance=default
diff --git a/bundles/org.eclipse.equinox.app/.settings/org.eclipse.pde.core.prefs b/bundles/org.eclipse.equinox.app/.settings/org.eclipse.pde.core.prefs
deleted file mode 100755
index e993d41..0000000
--- a/bundles/org.eclipse.equinox.app/.settings/org.eclipse.pde.core.prefs
+++ /dev/null
@@ -1,4 +0,0 @@
-#Fri Dec 02 16:20:40 CST 2005
-eclipse.preferences.version=1
-pluginProject.equinox=false
-pluginProject.extensions=true
diff --git a/bundles/org.eclipse.equinox.app/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.app/META-INF/MANIFEST.MF
deleted file mode 100755
index 2ae8213..0000000
--- a/bundles/org.eclipse.equinox.app/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,28 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.equinox.app; singleton:=true
-Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: %providerName
-Bundle-Activator: org.eclipse.equinox.internal.app.Activator
-Bundle-Localization: plugin
-Export-Package: org.eclipse.equinox.app;version="1.0",
- org.eclipse.equinox.internal.app;x-friends:="org.eclipse.core.runtime",
- org.osgi.service.application;version="1.0"
-Import-Package: org.osgi.framework;version="1.3",
- org.osgi.service.condpermadmin,
- org.osgi.service.event;version="1.0.0";resolution:=optional,
- org.osgi.service.packageadmin; version="1.2",
- org.osgi.util.tracker,
- org.eclipse.equinox.registry,
- org.eclipse.osgi.framework.log,
- org.eclipse.core.runtime.adaptor,
- org.eclipse.osgi.service.debug,
- org.eclipse.osgi.service.datalocation,
- org.eclipse.osgi.service.environment,
- org.eclipse.osgi.service.runnable,
- org.eclipse.osgi.storagemanager,
- org.eclipse.osgi.util,
- org.eclipse.osgi.framework.console; resolution:=optional
-Require-Bundle: org.eclipse.equinox.common
-DynamicImport-Package: org.osgi.service.event;version="1.0.0"
diff --git a/bundles/org.eclipse.equinox.app/about.html b/bundles/org.eclipse.equinox.app/about.html
deleted file mode 100755
index bd87495..0000000
--- a/bundles/org.eclipse.equinox.app/about.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<title>About</title>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>September 26, 2005</p> 
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html" target="_blank">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
-
-<h3>Third Party Content</h3>
-
-<p>The Content includes items that have been sourced from third parties as follows:</p>
-
-<p><b>OSGi Materials</b></p>
-
-<p>All files in the following sub-directories (and their sub-directories):</p>
-
-<ul>
- <li>org/osgi</li>
-</ul>
-
-<p>shall be defined as the &quot;OSGi Materials.&quot;  The OSGi Materials are:</p>
-
-<blockquote>
-Copyright (c) 2000, 2005
-<br /><br />
-OSGi Alliance
-Bishop Ranch 6<br/>
-2400 Camino Ramon, Suite 375<br/>
-San Ramon, CA 94583 USA
-<br /><br />
-All Rights Reserved.
-</blockquote>
-
-<p>The OSGi Materials are provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  For purposes of the EPL, &quot;Program&quot; will mean the OSGi Materials.</p>
-
-<p>Implementation of certain elements of the OSGi Materials may be subject to third party intellectual property rights, including without limitation, patent rights (such a third party may
-or may not be a member of the OSGi Alliance).  The OSGi Alliance and its members are not responsible and shall not be held responsible in any manner for identifying or failing to identify any or all such third party
-intellectual property rights.</p>
-
-<small>OSGi&trade; is a trademark, registered trademark, or service mark of The OSGi Alliance in the US and other countries. Java is a trademark,
-registered trademark, or service mark of Sun Microsystems, Inc. in the US and other countries. All other trademarks, registered trademarks, or
-service marks used in the Content are the property of their respective owners and are hereby recognized.</small>
-
-<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.equinox.app/build.properties b/bundles/org.eclipse.equinox.app/build.properties
deleted file mode 100755
index cefe3b6..0000000
--- a/bundles/org.eclipse.equinox.app/build.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
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               about.html
-src.includes = about.html
diff --git a/bundles/org.eclipse.equinox.app/plugin.properties b/bundles/org.eclipse.equinox.app/plugin.properties
deleted file mode 100755
index 31bd8dc..0000000
--- a/bundles/org.eclipse.equinox.app/plugin.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2004 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-pluginName = Equinox Application Container
-providerName = Eclipse.org
-applicationsName = Applications
-containersName = Containers
diff --git a/bundles/org.eclipse.equinox.app/plugin.xml b/bundles/org.eclipse.equinox.app/plugin.xml
deleted file mode 100755
index 412d428..0000000
--- a/bundles/org.eclipse.equinox.app/plugin.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin>
-   <extension-point id="applications" name="%applicationsName" schema="schema/applications.exsd"/>
-   <extension-point id="containers" name="%containersName" schema="schema/containers.exsd"/>
-   <extension
-         id="main.thread"
-         point="org.eclipse.equinox.app.containers">
-      <container
-            singleton="true"
-            type="main.thread">
-         <run class="org.eclipse.equinox.internal.app.MainThreadContainer"/>
-      </container>
-   </extension>
-   <extension
-         id="error"
-         point="org.eclipse.equinox.app.applications">
-      <application visible="false">
-         <run class="org.eclipse.equinox.internal.app.ErrorApplication"/>
-      </application>
-   </extension>
-</plugin>
diff --git a/bundles/org.eclipse.equinox.app/schema/applications.exsd b/bundles/org.eclipse.equinox.app/schema/applications.exsd
deleted file mode 100755
index 042b718..0000000
--- a/bundles/org.eclipse.equinox.app/schema/applications.exsd
+++ /dev/null
@@ -1,173 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.equinox.app">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.equinox.app" id="applications" name="Applications"/>
-      </appInfo>
-      <documentation>
-         Platform runtime supports plug-ins which would like to 
-declare main entry points.  That is, programs which 
-would like to run using the platform runtime but yet 
-control all aspects of execution can declare themselves 
-as an application.  Declared applications can be run 
-directly from the main platform launcher by specifying 
-the &lt;i&gt;-application&lt;/i&gt; argument where the parameter 
-is the id of an extension supplied to the 
-applications extension point described here.  
-This application is instantiated and run by the platform.  
-Platform clients can also use the platform to lookup and 
-run multiple applications.
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <sequence>
-            <element ref="application"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="application">
-      <complexType>
-         <sequence>
-            <element ref="run" minOccurs="0" maxOccurs="1"/>
-         </sequence>
-         <attribute name="type" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="visible" type="boolean" use="default" value="true">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="run">
-      <complexType>
-         <sequence>
-            <element ref="parameter" minOccurs="0" maxOccurs="unbounded"/>
-         </sequence>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the fully-qualified name of a class which implements 
-&lt;samp&gt;org.eclipse.equinox.application.IApplication&lt;/samp&gt;.
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.equinox.app.IApplication"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="parameter">
-      <annotation>
-         <appInfo>
-            <meta.element labelAttribute="name"/>
-         </appInfo>
-      </annotation>
-      <complexType>
-         <attribute name="name" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the name of this parameter made available to instances of the specified application class
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="value" type="string" use="required">
-            <annotation>
-               <documentation>
-                  the value of this parameter made available to instances of the specified application class
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
-         Following is an example of an application declaration: 
-&lt;p&gt;
-&lt;pre&gt;
-   &lt;extension id=&quot;coolApplication&quot; point=&quot;org.eclipse.equinox.applications&quot;&gt; 
-      &lt;application&gt; 
-         &lt;run class=&quot;com.xyz.applications.Cool&quot;&gt; 
-            &lt;parameter name=&quot;optimize&quot; value=&quot;true&quot;/&gt; 
-         &lt;/run&gt; 
-      &lt;/application&gt; 
-   &lt;/extension&gt; 
-&lt;/pre&gt;
-&lt;/p&gt;
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         The value of the class attribute must represent an 
-implementor of 
-&lt;samp&gt;org.eclipse.equinox.IPlatformRunnable&lt;/samp&gt;.
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         The platform supplies a number of applications including the platform workbench itself.
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         Copyright (c) 2004, 2005 IBM Corporation and others.&lt;br&gt;
-All rights reserved. This program and the accompanying materials are made 
-available under the terms of the Eclipse Public License v1.0 which 
-accompanies 
-this distribution, and is available at 
-&lt;a 
-href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
-      </documentation>
-   </annotation>
-
-</schema>
diff --git a/bundles/org.eclipse.equinox.app/schema/containers.exsd b/bundles/org.eclipse.equinox.app/schema/containers.exsd
deleted file mode 100755
index 9f8f736..0000000
--- a/bundles/org.eclipse.equinox.app/schema/containers.exsd
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.equinox.app">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.equinox.app" id="containers" name="Containers"/>
-      </appInfo>
-      <documentation>
-         [Enter description of this extension point.]
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <sequence>
-            <element ref="container"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="container">
-      <complexType>
-         <sequence>
-            <element ref="run"/>
-         </sequence>
-         <attribute name="type" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="singleton" type="boolean" use="default" value="false">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="run">
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.equinox.app.IContainer"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="since"/>
-      </appInfo>
-      <documentation>
-         [Enter the first release in which this extension point appears.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
-         [Enter extension point usage example here.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         [Enter API information here.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         [Enter information about supplied implementation of this extension point.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-</schema>
diff --git a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/app/IAppContext.java b/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/app/IAppContext.java
deleted file mode 100755
index 9f8c766..0000000
--- a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/app/IAppContext.java
+++ /dev/null
@@ -1,76 +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.equinox.app;
-
-import java.util.Map;
-import org.eclipse.equinox.registry.IConfigurationElement;
-import org.osgi.service.application.ApplicationDescriptor;
-
-/**
- * A context is used by a container to launch an application using 
- * {@link IContainer#launch(IAppContext)}.  The initial status of a 
- * context is {@link #ACTIVE} when it is given to a container to 
- * launch an application.
- * @see IApplication
- * @see IContainer
- * <p>
- * Clients may not implement this interface.
- * </p>
- * @since 3.2
- */
-public interface IAppContext {
-	/**
-	 * Indicates the application is active for this context
-	 */
-	public int ACTIVE = 0x01;
-	/**
-	 * Indicates the application is stopping for this context
-	 */
-	public int STOPPING = 0x02;
-	/**
-	 * Indicates the application is stopped for this context
-	 */
-	public int STOPPED = 0x04;
-
-	/**
-	 * Returns the arguments to use when launching an application.
-	 * @return the arguments to use when launching an applicaiton, null may be returned.
-	 */
-	public Map getArguments();
-
-	/**
-	 * Returns the application descriptor for this context.
-	 * @return the application descriptor for this context.
-	 */
-	public ApplicationDescriptor getApplicationDescriptor();
-
-	/**
-	 * Returns the configuration element for this context.
-	 * @return the configuration element for this context.
-	 */
-	public IConfigurationElement getConfiguration();
-
-	/**
-	 * Called by the container when an application is stopping or has stopped.
-	 * @param status may be {@link #STOPPING} or {@link #STOPPED}
-	 * @see #STOPPING
-	 * @see #STOPPED
-	 * @throws IllegalArgumentException if {@link #ACTIVE} is used as the status.
-	 */
-	public void setAppStatus(int status);
-
-	/**
-	 * Returns the current app status according to the context
-	 * @return the current app status according to the context
-	 */
-	public int getAppStatus();
-}
diff --git a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/app/IApplication.java b/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/app/IApplication.java
deleted file mode 100755
index e83c0a8..0000000
--- a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/app/IApplication.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.equinox.app;
-
-/**
- * Bootstrap type for an application.  An IApplication represent executable 
- * entry points into an application.  An IApplication can be configured into 
- * the Platform's <code>org.eclipse.equinox.applications</code> extension-point.
- *
- * <p>
- * Clients may implement this interface.
- * </p>
- * 
- * @since 3.2
- */
-public interface IApplication {
-
-	/**
-	 * Exit object indicating normal termination
-	 */
-	public static final Integer EXIT_OK = new Integer(0);
-
-	/**
-	 * Exit object requesting platform restart
-	 */
-	public static final Integer EXIT_RESTART = new Integer(23);
-
-	/**
-	 * Exit object requesting that the command passed back be executed.  Typically
-	 * this is used to relaunch Eclipse with different command line arguments.
-	 */
-	public static final Integer EXIT_RELAUNCH = new Integer(24);
-
-	/**
-	 * Runs this application with the given args and returns a result.
-	 * The content of the args is unchecked and should conform to the expectations of
-	 * the runnable being invoked.  Typically this is a <code>String</code> array. <p>
-	 * 
-	 * Applications can return any object they like.  If an <code>Integer</code> is returned
-	 * it is treated as the program exit code if Eclipse is exiting.
-	 * @return the return value of the application
-	 * @see #EXIT_OK
-	 * @see #EXIT_RESTART
-	 * @see #EXIT_RELAUNCH
-	 * @param args the argument(s) to pass to the application
-	 * @exception Exception if there is a problem running this application.
-	 */
-	public Object run(Object args) throws Exception;
-
-	/**
-	 * Forces a running application to exit.  This method must block until the 
-	 * running application has completely stopped.
-	 */
-	public void stop();
-}
diff --git a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/app/IContainer.java b/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/app/IContainer.java
deleted file mode 100755
index 6c9d2e5..0000000
--- a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/app/IContainer.java
+++ /dev/null
@@ -1,40 +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.equinox.app;
-
-/**
- * A container is used to launch applications.
- * @see IAppContext
- * @see IApplication
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 3.2
- */
-public interface IContainer {
-	/**
-	 * Launch an application with the given application context.  The given 
-	 * context must have its {@link IAppContext#setAppStatus(int)} method called by 
-	 * the container when the returned application has stopped.
-	 * @param context the application context to launch an application with
-	 * @return the application which was launched
-	 * @throws Exception if any errors occur while launching the application
-	 */
-	IApplication launch(IAppContext context) throws Exception;
-
-	/**
-	 * This method should shutdown the container and free any resources it may have
-	 * been using.  All applications currently active in this container will be 
-	 * asked to stop before this method is called.
-	 */
-	void shutdown();
-}
diff --git a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/Activator.java b/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/Activator.java
deleted file mode 100755
index 99da716..0000000
--- a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/Activator.java
+++ /dev/null
@@ -1,88 +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.equinox.internal.app;
-
-import org.eclipse.equinox.registry.IExtensionRegistry;
-import org.eclipse.osgi.service.debug.DebugOptions;
-import org.osgi.framework.*;
-import org.osgi.util.tracker.ServiceTracker;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-
-public class Activator implements BundleActivator, ServiceTrackerCustomizer {
-	public static final String PI_APP = "org.eclipse.equinox.app"; //$NON-NLS-1$
-	public static boolean DEBUG = false;
-	private BundleContext bContext;
-	private ContainerManager containerMgr;
-	// tracks the extension registry
-	private ServiceTracker registryTracker;
-
-	public void start(BundleContext context) throws Exception {
-		this.bContext = context;
-		getDebugOptions(context);
-		// set the app manager context before starting the containerMgr
-		AppPersistenceUtil.setBundleContext(context);
-		registryTracker = new ServiceTracker(context, IExtensionRegistry.class.getName(), this);
-		registryTracker.open();
-		// start the app commands for the console
-		try {
-			AppCommands.create(context);
-		} catch (NoClassDefFoundError e) {
-			// catch incase CommandProvider is not available
-		}
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// stop the app commands for the console
-		try {
-			AppCommands.destroy(context);
-		} catch (NoClassDefFoundError e) {
-			// catch incase CommandProvider is not available
-		}
-		// close the registry tracker; this will stop the containerMgr if it was started
-		registryTracker.close();
-		registryTracker = null;
-		// unset the app manager context after the containerMgr has been stopped
-		AppPersistenceUtil.setBundleContext(null);
-		bContext = null;
-	}
-
-	private void getDebugOptions(BundleContext context) {
-		ServiceReference debugRef = context.getServiceReference(DebugOptions.class.getName());
-		if (debugRef == null)
-			return;
-		DebugOptions debugOptions = (DebugOptions) context.getService(debugRef);
-		DEBUG = debugOptions.getBooleanOption(PI_APP + "/debug", false); //$NON-NLS-1$
-		context.ungetService(debugRef);
-	}
-
-	public Object addingService(ServiceReference reference) {
-		if (containerMgr != null)
-			return null;
-		// create and start the app containerMgr
-		IExtensionRegistry registry = (IExtensionRegistry) bContext.getService(reference);
-		containerMgr = new ContainerManager(bContext, registry);
-		containerMgr.startManager();
-		return registry;
-	}
-
-	public void modifiedService(ServiceReference reference, Object service) {
-		// do nothing
-	}
-
-	public void removedService(ServiceReference reference, Object service) {
-		if (containerMgr == null)
-			return;
-		// stop the app containerMgr
-		containerMgr.stopManager();
-		containerMgr = null;
-	}
-}
diff --git a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/AppCommands.java b/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/AppCommands.java
deleted file mode 100755
index 06258a5..0000000
--- a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/AppCommands.java
+++ /dev/null
@@ -1,251 +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.equinox.internal.app;
-
-import java.util.*;
-import org.eclipse.osgi.framework.console.CommandInterpreter;
-import org.eclipse.osgi.framework.console.CommandProvider;
-import org.osgi.framework.*;
-import org.osgi.service.application.*;
-import org.osgi.util.tracker.ServiceTracker;
-
-public class AppCommands implements CommandProvider {
-	private final static String LAUNCHABLE_APP_FILTER = "(&(application.locked=false)(application.launchable=true)(application.visible=true))"; //$NON-NLS-1$
-	private final static String ACTIVE_APP_FILTER = "(!(application.state=STOPPING))"; //$NON-NLS-1$
-
-	private static AppCommands instance;
-	private BundleContext context;
-	private ServiceTracker appDescTracker;
-	private ServiceTracker appHandleTracker;
-	private ServiceTracker schedAppTracker;
-	private Filter launchableApp;
-	private Filter activeApp;
-	private ServiceRegistration sr;
-
-	static synchronized void create(BundleContext context) {
-		if (instance != null)
-			return;
-		instance = new AppCommands();
-		instance.start(context);
-	}
-
-	static synchronized void destroy(BundleContext context) {
-		if (instance == null)
-			return;
-		instance.stop(context);
-		instance = null;
-	}
-
-	protected AppCommands() {
-		// empty
-	}
-
-	public void start(BundleContext ctx) {
-		this.context = ctx;
-		try {
-			appDescTracker = new ServiceTracker(ctx, ApplicationDescriptor.class.getName(), null);
-			appDescTracker.open();
-			appHandleTracker = new ServiceTracker(ctx, ApplicationHandle.class.getName(), null);
-			appHandleTracker.open();
-			schedAppTracker = new ServiceTracker(ctx, ScheduledApplication.class.getName(), null);
-			schedAppTracker.open();
-			launchableApp = ctx.createFilter(LAUNCHABLE_APP_FILTER);
-			activeApp = ctx.createFilter(ACTIVE_APP_FILTER);
-			sr = ctx.registerService(CommandProvider.class.getName(), this, null);
-		} catch (InvalidSyntaxException e) {
-			// should not happen.
-		}
-	}
-
-	public void stop(BundleContext ctx) {
-		sr.unregister();
-		if (appDescTracker != null)
-			appDescTracker.close();
-		if (appHandleTracker != null)
-			appHandleTracker.close();
-		if (schedAppTracker != null)
-			schedAppTracker.close();
-	}
-
-	public String getHelp() {
-		StringBuffer sb = new StringBuffer();
-		sb.append("---Application Admin Commands---\n"); //$NON-NLS-1$
-		sb.append("\tactiveApps - lists all running application IDs\n"); //$NON-NLS-1$
-		sb.append("\tapps - lists all installed application IDs\n"); //$NON-NLS-1$
-		sb.append("\tlockApp <application id> - locks the specified application ID\n"); //$NON-NLS-1$
-		sb.append("\tschedApp <application id> <time filter> [true|false] - schedules the specified application id to launch at the specified time filter.  Can optionally make the schedule recurring.\n"); //$NON-NLS-1$
-		sb.append("\tstartApp <application id> - starts the specified application ID\n"); //$NON-NLS-1$
-		sb.append("\tstopApp <application id> - stops the specified running application ID\n"); //$NON-NLS-1$
-		sb.append("\tunlockApp <application id> - unlocks the specified application ID\n"); //$NON-NLS-1$
-		sb.append("\tunschedApp <application id> - unschedules all scheduled applications with the specified application ID\n"); //$NON-NLS-1$
-		return sb.toString();
-	}
-
-	private Dictionary getServiceProps(ServiceReference ref) {
-		String[] keys = ref.getPropertyKeys();
-		Hashtable props = new Hashtable(keys.length);
-		for (int i = 0; i < keys.length; i++)
-			props.put(keys[i], ref.getProperty(keys[i]));
-		return props;
-	}
-
-	public void _apps(CommandInterpreter intp) {
-		ServiceReference[] apps = appDescTracker.getServiceReferences();
-		if (apps == null) {
-			intp.println("No applications found."); //$NON-NLS-1$
-			return;
-		}
-		for (int i = 0; i < apps.length; i++) {
-			intp.print(apps[i].getProperty(ApplicationDescriptor.APPLICATION_PID));
-			intp.print(" ["); //$NON-NLS-1$
-			intp.print(launchableApp.match(getServiceProps(apps[i])) ? "enabled" : "disabled"); //$NON-NLS-1$ //$NON-NLS-2$
-			intp.println("]"); //$NON-NLS-1$
-		}
-	}
-
-	public void _activeApps(CommandInterpreter intp) {
-		ServiceReference[] active = appHandleTracker.getServiceReferences();
-		if (active == null) {
-			intp.println("No active applications found"); //$NON-NLS-1$
-			return;
-		}
-		for (int i = 0; i < active.length; i++) {
-			intp.print(active[i].getProperty(ApplicationHandle.APPLICATION_PID));
-			intp.print(" ["); //$NON-NLS-1$
-			intp.print(activeApp.match(getServiceProps(active[i])) ? "running" : "stopping"); //$NON-NLS-1$ //$NON-NLS-2$
-			intp.println("]"); //$NON-NLS-1$
-		}
-	}
-
-	public void _startApp(CommandInterpreter intp) throws Exception {
-		String appId = intp.nextArgument();
-		ServiceReference[] apps = appDescTracker.getServiceReferences();
-		if (apps != null)
-			for (int i = 0; i < apps.length; i++)
-				if (appId.equals(apps[i].getProperty(ApplicationDescriptor.APPLICATION_PID))) {
-					if (launchableApp.match(getServiceProps(apps[i]))) {
-						ArrayList argList = new ArrayList();
-						String arg = null;
-						while ((arg = intp.nextArgument()) != null)
-							argList.add(arg);
-						String[] args = argList.size() == 0 ? null : (String[]) argList.toArray(new String[argList.size()]);
-						ApplicationDescriptor appDesc = (ApplicationDescriptor) context.getService(apps[i]);
-						try {
-							HashMap launchArgs = new HashMap(1);
-							if (args != null)
-								launchArgs.put(ContainerManager.PROP_ECLIPSE_APPLICATION_ARGS, args);
-							appDesc.launch(launchArgs);
-							intp.println("Launched application: " + appId); //$NON-NLS-1$
-						} finally {
-							context.ungetService(apps[i]);
-						}
-					} else {
-						intp.println("Application is not enabled: " + appId); //$NON-NLS-1$
-					}
-					return;
-				}
-		intp.println("No application with the id \"" + appId + "\" exists."); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void _stopApp(CommandInterpreter intp) throws Exception {
-		String runningId = intp.nextArgument();
-		ServiceReference[] runningApps = appHandleTracker.getServiceReferences();
-		if (runningApps != null)
-			for (int i = 0; i < runningApps.length; i++)
-				if (runningId.equals(runningApps[i].getProperty(ApplicationHandle.APPLICATION_PID))) {
-					if (activeApp.match(getServiceProps(runningApps[i]))) {
-						try {
-							ApplicationHandle appDesc = (ApplicationHandle) context.getService(runningApps[i]);
-							appDesc.destroy();
-							intp.println("Stopped application: " + runningId); //$NON-NLS-1$
-						} finally {
-							context.ungetService(runningApps[i]);
-						}
-					} else {
-						intp.println("Applicationi is already stopping: " + runningId); //$NON-NLS-1$
-					}
-					return;
-				}
-		intp.println("No running application with the id \"" + runningId + "\" exists."); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void _lockApp(CommandInterpreter intp) throws Exception {
-		String appId = intp.nextArgument();
-		ServiceReference[] apps = appDescTracker.getServiceReferences();
-		if (apps != null)
-			for (int i = 0; i < apps.length; i++)
-				if (appId.equals(apps[i].getProperty(ApplicationDescriptor.APPLICATION_PID))) {
-					try {
-						ApplicationDescriptor appDesc = (ApplicationDescriptor) context.getService(apps[i]);
-						appDesc.lock();
-						intp.println("Locked application: " + appId); //$NON-NLS-1$
-					} finally {
-						context.ungetService(apps[i]);
-					}
-					return;
-				}
-		intp.println("No application with the id \"" + appId + "\" exists."); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void _unlockApp(CommandInterpreter intp) throws Exception {
-		String appId = intp.nextArgument();
-		ServiceReference[] apps = appDescTracker.getServiceReferences();
-		if (apps != null)
-			for (int i = 0; i < apps.length; i++)
-				if (appId.equals(apps[i].getProperty(ApplicationDescriptor.APPLICATION_PID))) {
-					try {
-						ApplicationDescriptor appDesc = (ApplicationDescriptor) context.getService(apps[i]);
-						appDesc.unlock();
-						intp.println("Unlocked application: " + appId); //$NON-NLS-1$
-					} finally {
-						context.ungetService(apps[i]);
-					}
-					return;
-				}
-		intp.println("No application with the id \"" + appId + "\" exists."); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void _schedApp(CommandInterpreter intp) throws Exception {
-		String appId = intp.nextArgument();
-		ServiceReference[] apps = appDescTracker.getServiceReferences();
-		if (apps != null)
-			for (int i = 0; i < apps.length; i++)
-				if (appId.equals(apps[i].getProperty(ApplicationDescriptor.APPLICATION_PID))) {
-					try {
-						ApplicationDescriptor appDesc = (ApplicationDescriptor) context.getService(apps[i]);
-						String filter = intp.nextArgument();
-						boolean recure = Boolean.valueOf(intp.nextArgument()).booleanValue();
-						appDesc.schedule(null, "org/osgi/application/timer", filter, recure); //$NON-NLS-1$
-						intp.println("scheduled application: " + appId); //$NON-NLS-1$
-					} finally {
-						context.ungetService(apps[i]);
-					}
-					return;
-				}
-		intp.println("No application with the id \"" + appId + "\" exists."); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void _unschedApp(CommandInterpreter intp) throws Exception {
-		String schedId = intp.nextArgument();
-		ServiceReference[] scheds = schedAppTracker.getServiceReferences();
-		if (scheds != null)
-			for (int i = 0; i < scheds.length; i++) {
-				ScheduledApplication schedApp = (ScheduledApplication) context.getService(scheds[i]);
-				try {
-					if (schedId.equals(schedApp.getApplicationDescriptor().getApplicationId()))
-						schedApp.remove();
-				} finally {
-					context.ungetService(scheds[i]);
-				}
-			}
-
-	}
-}
diff --git a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/AppPersistenceUtil.java b/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/AppPersistenceUtil.java
deleted file mode 100755
index e95118b..0000000
--- a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/AppPersistenceUtil.java
+++ /dev/null
@@ -1,589 +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.equinox.internal.app;
-
-import java.io.*;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.*;
-import org.eclipse.osgi.service.datalocation.Location;
-import org.eclipse.osgi.service.environment.EnvironmentInfo;
-import org.eclipse.osgi.storagemanager.StorageManager;
-import org.osgi.framework.*;
-import org.osgi.service.application.ApplicationDescriptor;
-import org.osgi.service.application.ScheduledApplication;
-import org.osgi.service.event.*;
-import org.osgi.service.packageadmin.PackageAdmin;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * Manages all persistent data for ApplicationDescriptors (lock status, 
- * scheduled applications etc.)
- */
-public class AppPersistenceUtil {
-	private static final String PROP_CONFIG_AREA = "osgi.configuration.area"; //$NON-NLS-1$
-
-	private static final String FILTER_PREFIX = "(&(objectClass=org.eclipse.osgi.service.datalocation.Location)(type="; //$NON-NLS-1$
-	private static final String FILE_APPLOCKS = ".locks"; //$NON-NLS-1$
-	private static final String FILE_APPSCHEDULED = ".scheduled"; //$NON-NLS-1$
-	private static final String EVENT_HANDLER = "org.osgi.service.event.EventHandler"; //$NON-NLS-1$
-	private static final String EVENT_TIMER_TOPIC = "org/osgi/application/timer"; //$NON-NLS-1$
-
-	private static final int DATA_VERSION = 1;
-	private static final byte NULL = 0;
-	private static final int OBJECT = 1;
-
-	// obsolete command line args
-	private static final String NO_PACKAGE_PREFIXES = "-noPackagePrefixes"; //$NON-NLS-1$
-	private static final String CLASSLOADER_PROPERTIES = "-classloaderProperties"; //$NON-NLS-1$	
-	private static final String PLUGINS = "-plugins"; //$NON-NLS-1$
-	private static final String FIRST_USE = "-firstUse"; //$NON-NLS-1$
-	private static final String NO_UPDATE = "-noUpdate"; //$NON-NLS-1$
-	private static final String NEW_UPDATES = "-newUpdates"; //$NON-NLS-1$
-	private static final String UPDATE = "-update"; //$NON-NLS-1$
-	private static final String BOOT = "-boot"; //$NON-NLS-1$
-
-	// command line args not used by app container
-	private static final String KEYRING = "-keyring"; //$NON-NLS-1$
-	private static final String PASSWORD = "-password"; //$NON-NLS-1$
-
-	// command line args used by app container
-	private static final String PRODUCT = "-product"; //$NON-NLS-1$
-	private static final String FEATURE = "-feature"; //$NON-NLS-1$
-	private static final String APPLICATION = "-application"; //$NON-NLS-1$	
-
-	private static BundleContext context;
-	private static ServiceTracker configuration;
-	private static ServiceTracker pkgAdminTracker;
-	private static Collection locks = new ArrayList();
-	private static Map scheduledApps = new HashMap();
-	static ArrayList timerApps = new ArrayList();
-	private static StorageManager storageManager;
-	private static boolean dirty;
-	private static boolean scheduling = false;
-	static boolean shutdown = false;
-	private static int nextScheduledID = 1;
-	private static Thread timerThread;
-	private static String[] appArgs;
-
-	static synchronized void setBundleContext(BundleContext context) {
-		if (context != null) {
-			AppPersistenceUtil.context = context;
-			init();
-		} else {
-			shutdown();
-			AppPersistenceUtil.context = context;
-		}
-	}
-
-	private static void init() {
-		shutdown = false;
-		appArgs = processCommandLine();
-		initPackageAdmin();
-		initConfiguration();
-		loadData(FILE_APPLOCKS);
-		loadData(FILE_APPSCHEDULED);
-	}
-
-	private static void shutdown() {
-		shutdown = true;
-		stopTimer();
-		saveData();
-		if (storageManager != null) {
-			storageManager.close();
-			storageManager = null;
-		}
-		closeConfiguration();
-		closePackageAdmin();
-		appArgs = null;
-	}
-
-	private static void initPackageAdmin() {
-		closePackageAdmin(); // just incase
-		pkgAdminTracker = new ServiceTracker(context, PackageAdmin.class.getName(), null);
-		pkgAdminTracker.open();
-	}
-
-	private static void closePackageAdmin() {
-		if (pkgAdminTracker != null)
-			pkgAdminTracker.close();
-		pkgAdminTracker = null;
-	}
-
-	private static void initConfiguration() {
-		closeConfiguration(); // just incase
-		Filter filter = null;
-		try {
-			filter = context.createFilter(FILTER_PREFIX + PROP_CONFIG_AREA + "))"); //$NON-NLS-1$
-		} catch (InvalidSyntaxException e) {
-			// ignore this.  It should never happen as we have tested the above format.
-		}
-		configuration = new ServiceTracker(context, filter, null);
-		configuration.open();
-	}
-
-	private static void closeConfiguration() {
-		if (configuration != null)
-			configuration.close();
-		configuration = null;
-	}
-
-	/**
-	 * Used by {@link ApplicationDescriptor} to determine if an application is locked.
-	 * @param desc the application descriptor
-	 * @return true if the application is persistently locked.
-	 */
-	public synchronized static boolean isLocked(ApplicationDescriptor desc) {
-		return locks.contains(desc.getApplicationId());
-	}
-
-	/**
-	 * Used by {@link ApplicationDescriptor} to determine lock and unlock and application.
-	 * @param desc the application descriptor
-	 * @param locked the locked flag
-	 */
-	public synchronized static void saveLock(ApplicationDescriptor desc, boolean locked) {
-		if (locked) {
-			if (!locks.contains(desc.getApplicationId())) {
-				dirty = true;
-				locks.add(desc.getApplicationId());
-			}
-		} else if (locks.remove(desc.getApplicationId())) {
-			dirty = true;
-		}
-	}
-
-	synchronized static void removeScheduledApp(EclipseScheduledApplication scheduledApp) {
-		if (scheduledApps.remove(scheduledApp.getID()) != null) {
-			timerApps.remove(scheduledApp);
-			dirty = true;
-		}
-	}
-
-	/**
-	 * Used by {@link ScheduledApplication} to persistently schedule an application launch
-	 * @param descriptor
-	 * @param arguments
-	 * @param topic
-	 * @param eventFilter
-	 * @param recurring
-	 * @return the scheduled application
-	 * @throws InvalidSyntaxException
-	 */
-	public synchronized static ScheduledApplication addScheduledApp(ApplicationDescriptor descriptor, Map arguments, String topic, String eventFilter, boolean recurring) throws InvalidSyntaxException {
-		if (!scheduling && !checkSchedulingSupport())
-			throw new UnsupportedOperationException("Cannot support scheduling without org.osgi.service.event package"); //$NON-NLS-1$
-		// check the event filter for correct syntax
-		context.createFilter(eventFilter);
-		EclipseScheduledApplication result = new EclipseScheduledApplication(context, getNextScheduledID(), descriptor.getApplicationId(), arguments, topic, eventFilter, recurring);
-		addScheduledApp(result);
-		dirty = true;
-		return result;
-	}
-
-	private static void addScheduledApp(EclipseScheduledApplication scheduledApp) {
-		if (EVENT_TIMER_TOPIC.equals(scheduledApp.getTopic())) {
-			timerApps.add(scheduledApp);
-			if (timerThread == null)
-				startTimer();
-		}
-		scheduledApps.put(scheduledApp.getID(), scheduledApp);
-		Hashtable serviceProps = new Hashtable();
-		if (scheduledApp.getTopic() != null)
-			serviceProps.put(EventConstants.EVENT_TOPIC, new String[] {scheduledApp.getTopic()});
-		if (scheduledApp.getEventFilter() != null)
-			serviceProps.put(EventConstants.EVENT_FILTER, scheduledApp.getEventFilter());
-		ServiceRegistration sr = context.registerService(new String[] {ScheduledApplication.class.getName(), EVENT_HANDLER}, scheduledApp, serviceProps);
-		scheduledApp.setServiceRegistration(sr);
-	}
-
-	private static Integer getNextScheduledID() {
-		if (nextScheduledID == Integer.MAX_VALUE)
-			nextScheduledID = 0;
-		Integer result = new Integer(nextScheduledID++);
-		while (scheduledApps.get(result) != null && nextScheduledID < Integer.MAX_VALUE)
-			result = new Integer(nextScheduledID++);
-		if (nextScheduledID == Integer.MAX_VALUE)
-			throw new IllegalStateException("Maximum number of scheduled applications reached"); //$NON-NLS-1$
-		return result;
-	}
-
-	private static boolean checkSchedulingSupport() {
-		// cannot support scheduling without the event admin package
-		try {
-			Class.forName(EVENT_HANDLER);
-			scheduling = true;
-			return true;
-		} catch (ClassNotFoundException e) {
-			scheduling = false;
-			return false;
-		}
-	}
-
-	private synchronized static boolean loadData(String fileName) {
-		try {
-			Location location = (Location) configuration.getService();
-			if (location == null)
-				return false;
-			File theStorageDir = new File(location.getURL().getPath() + '/' + Activator.PI_APP);
-			boolean readOnly = location.isReadOnly();
-			storageManager = new StorageManager(theStorageDir, readOnly ? "none" : null, readOnly); //$NON-NLS-1$
-			storageManager.open(!readOnly);
-			File dataFile = storageManager.lookup(fileName, false);
-			if (dataFile == null || !dataFile.isFile()) {
-				Location parent = location.getParentLocation();
-				if (parent != null) {
-					theStorageDir = new File(parent.getURL().getPath() + '/' + Activator.PI_APP);
-					StorageManager tmp = new StorageManager(theStorageDir, "none", true); //$NON-NLS-1$
-					tmp.open(false);
-					dataFile = tmp.lookup(fileName, false);
-					tmp.close();
-				}
-			}
-			if (dataFile == null || !dataFile.isFile())
-				return true;
-			if (fileName.equals(FILE_APPLOCKS))
-				loadLocks(dataFile);
-			else if (fileName.equals(FILE_APPSCHEDULED))
-				loadSchedules(dataFile);
-		} catch (IOException e) {
-			return false;
-		}
-		return true;
-	}
-
-	private static void loadLocks(File locksData) throws IOException {
-		ObjectInputStream in = null;
-		try {
-			in = new ObjectInputStream(new FileInputStream(locksData));
-			int dataVersion = in.readInt();
-			if (dataVersion != DATA_VERSION)
-				return;
-			int numLocks = in.readInt();
-			for (int i = 0; i < numLocks; i++)
-				locks.add(in.readUTF());
-		} finally {
-			if (in != null)
-				in.close();
-		}
-	}
-
-	private static void loadSchedules(File schedulesData) throws IOException {
-		ObjectInputStream in = null;
-		try {
-			in = new ObjectInputStream(new FileInputStream(schedulesData));
-			int dataVersion = in.readInt();
-			if (dataVersion != DATA_VERSION)
-				return;
-			int numScheds = in.readInt();
-			for (int i = 0; i < numScheds; i++) {
-				Integer id = new Integer(in.readInt());
-				String appPid = readString(in, false);
-				String topic = readString(in, false);
-				String eventFilter = readString(in, false);
-				boolean recurring = in.readBoolean();
-				Map args = (Map) in.readObject();
-				EclipseScheduledApplication schedApp = new EclipseScheduledApplication(context, id, appPid, args, topic, eventFilter, recurring);
-				addScheduledApp(schedApp);
-			}
-		} catch (InvalidSyntaxException e) {
-			throw new IOException(e.getMessage());
-		} catch (NoClassDefFoundError e) {
-			throw new IOException(e.getMessage());
-		} catch (ClassNotFoundException e) {
-			throw new IOException(e.getMessage());
-		} finally {
-			if (in != null)
-				in.close();
-		}
-	}
-
-	private synchronized static void saveData() {
-		if (!dirty || storageManager.isReadOnly())
-			return;
-		try {
-			File locksData = storageManager.createTempFile(FILE_APPLOCKS);
-			saveLocks(locksData);
-			File schedulesData = storageManager.createTempFile(FILE_APPSCHEDULED);
-			saveSchedules(schedulesData);
-			storageManager.lookup(FILE_APPLOCKS, true);
-			storageManager.lookup(FILE_APPSCHEDULED, true);
-			storageManager.update(new String[] {FILE_APPLOCKS, FILE_APPSCHEDULED}, new String[] {locksData.getName(), schedulesData.getName()});
-		} catch (IOException e) {
-			// TODO should log this!!
-		}
-		dirty = false;
-	}
-
-	private static void saveLocks(File locksData) throws IOException {
-		ObjectOutputStream out = null;
-		try {
-			out = new ObjectOutputStream(new FileOutputStream(locksData));
-			out.writeInt(DATA_VERSION);
-			out.writeInt(locks.size());
-			for (Iterator iterLocks = locks.iterator(); iterLocks.hasNext();)
-				out.writeUTF((String) iterLocks.next());
-		} finally {
-			if (out != null)
-				out.close();
-		}
-	}
-
-	private static void saveSchedules(File schedulesData) throws IOException {
-		ObjectOutputStream out = null;
-		try {
-			out = new ObjectOutputStream(new FileOutputStream(schedulesData));
-			out.writeInt(DATA_VERSION);
-			out.writeInt(scheduledApps.size());
-			for (Iterator apps = scheduledApps.values().iterator(); apps.hasNext();) {
-				EclipseScheduledApplication app = (EclipseScheduledApplication) apps.next();
-				out.writeInt(app.getID().intValue());
-				writeStringOrNull(out, app.getAppPid());
-				writeStringOrNull(out, app.getTopic());
-				writeStringOrNull(out, app.getEventFilter());
-				out.writeBoolean(app.isRecurring());
-				out.writeObject(app.getArguments());
-			}
-		} finally {
-			if (out != null)
-				out.close();
-		}
-	}
-
-	private static void startTimer() {
-		timerThread = new Thread(new AppTimer(), "app schedule timer"); //$NON-NLS-1$
-		timerThread.start();
-	}
-
-	private static void stopTimer() {
-		if (timerThread != null)
-			timerThread.interrupt();
-		timerThread = null;
-	}
-
-	private static class AppTimer implements Runnable {
-		public void run() {
-			int lastMin = -1;
-			while (!shutdown) {
-				try {
-					Thread.sleep(30000); // sleeping 30 secs instead of 60 to try to avoid skipping minutes
-					Calendar cal = Calendar.getInstance();
-					int minute = cal.get(Calendar.MINUTE);
-					if (minute == lastMin)
-						continue;
-					lastMin = minute;
-					Hashtable props = new Hashtable();
-					props.put("year", new Integer(cal.get(Calendar.YEAR))); //$NON-NLS-1$
-					props.put("month", new Integer(cal.get(Calendar.MONTH))); //$NON-NLS-1$
-					props.put("day_of_month", new Integer(cal.get(Calendar.DAY_OF_MONTH))); //$NON-NLS-1$
-					props.put("day_of_week", new Integer(cal.get(Calendar.DAY_OF_WEEK))); //$NON-NLS-1$
-					props.put("hour_of_day", new Integer(cal.get(Calendar.HOUR_OF_DAY))); //$NON-NLS-1$
-					props.put("minute", new Integer(minute)); //$NON-NLS-1$
-					Event timerEvent = new Event(EVENT_TIMER_TOPIC, props);
-					synchronized (AppPersistenceUtil.class) {
-						// poor mans implementation of dispatching events; the spec will not allow us to use event admin to dispatch the virtual timer events; boo!!
-						if (timerApps.size() == 0)
-							continue;
-						EclipseScheduledApplication[] apps = (EclipseScheduledApplication[]) timerApps.toArray(new EclipseScheduledApplication[timerApps.size()]);
-						for (int i = 0; i < apps.length; i++) {
-							try {
-								String filterString = apps[i].getEventFilter();
-								Filter filter = filterString == null ? null : FrameworkUtil.createFilter(filterString);
-								if (filter == null || filter.match(props))
-									apps[i].handleEvent(timerEvent);
-							} catch (Throwable t) {
-								t.printStackTrace();
-								// TODO should log this
-							}
-						}
-					}
-				} catch (InterruptedException e) {
-					// do nothing;
-				}
-			}
-		}
-	}
-
-	private static String readString(ObjectInputStream in, boolean intern) throws IOException {
-		byte type = in.readByte();
-		if (type == NULL)
-			return null;
-		return intern ? in.readUTF().intern() : in.readUTF();
-	}
-
-	private static void writeStringOrNull(ObjectOutputStream out, String string) throws IOException {
-		if (string == null)
-			out.writeByte(NULL);
-		else {
-			out.writeByte(OBJECT);
-			out.writeUTF(string);
-		}
-	}
-
-	public static Bundle getBundle(String symbolicName) {
-		PackageAdmin packageAdmin = (PackageAdmin) getService(pkgAdminTracker);
-		if (packageAdmin == null)
-			return null;
-		Bundle[] bundles = packageAdmin.getBundles(symbolicName, null);
-		if (bundles == null)
-			return null;
-		//Return the first bundle that is not installed or uninstalled
-		for (int i = 0; i < bundles.length; i++)
-			if ((bundles[i].getState() & (Bundle.INSTALLED | Bundle.UNINSTALLED)) == 0)
-				return bundles[i];
-		return null;
-	}
-
-	/**
-	 * Returns the default application args that should be used to launch an application 
-	 * when args are not supplied.
-	 * @return the default application args.
-	 */
-	public static String[] getApplicationArgs() {
-		return appArgs;
-	}
-
-	private static String[] processCommandLine() {
-		ServiceReference infoRef = context.getServiceReference(EnvironmentInfo.class.getName());
-		if (infoRef == null)
-			return null;
-		EnvironmentInfo envInfo = (EnvironmentInfo) context.getService(infoRef);
-		if (envInfo == null)
-			return null;
-		String[] args = envInfo.getNonFrameworkArgs();
-		context.ungetService(infoRef);
-		if (args == null)
-			return args;
-		if (args.length == 0)
-			return args;
-
-		int[] configArgs = new int[args.length];
-		//need to initialize the first element to something that could not be an index.
-		configArgs[0] = -1;
-		int configArgIndex = 0;
-		for (int i = 0; i < args.length; i++) {
-			boolean found = false;
-			// check for args without parameters (i.e., a flag arg)
-
-			// consume obsolete args
-			if (args[i].equalsIgnoreCase(CLASSLOADER_PROPERTIES))
-				found = true; // ignored
-			if (args[i].equalsIgnoreCase(NO_PACKAGE_PREFIXES))
-				found = true; // ignored
-			if (args[i].equalsIgnoreCase(PLUGINS))
-				found = true; // ignored
-			if (args[i].equalsIgnoreCase(FIRST_USE))
-				found = true; // ignored
-			if (args[i].equalsIgnoreCase(NO_UPDATE))
-				found = true; // ignored
-			if (args[i].equalsIgnoreCase(NEW_UPDATES))
-				found = true; // ignored
-			if (args[i].equalsIgnoreCase(UPDATE))
-				found = true; // ignored
-
-			// done checking for args.  Remember where an arg was found 
-			if (found) {
-				configArgs[configArgIndex++] = i;
-				continue;
-			}
-			// check for args with parameters
-			if (i == args.length - 1 || args[i + 1].startsWith("-")) //$NON-NLS-1$
-				continue;
-			String arg = args[++i];
-
-			// consume args not used by app container
-			if (args[i - 1].equalsIgnoreCase(KEYRING))
-				found = true;
-			if (args[i - 1].equalsIgnoreCase(PASSWORD))
-				found = true;
-
-			// consume obsolete args for compatibilty
-			if (args[i - 1].equalsIgnoreCase(CLASSLOADER_PROPERTIES))
-				found = true; // ignore
-			if (args[i - 1].equalsIgnoreCase(BOOT))
-				found = true; // ignore
-
-			// look for the product to run
-			// treat -feature as a synonym for -product for compatibility.
-			if (args[i - 1].equalsIgnoreCase(PRODUCT) || args[i - 1].equalsIgnoreCase(FEATURE)) {
-				// use the long way to set the property to compile against eeminimum
-				System.getProperties().setProperty(ContainerManager.PROP_PRODUCT, arg);
-				found = true;
-			}
-
-			// look for the application to run.  
-			if (args[i - 1].equalsIgnoreCase(APPLICATION)) {
-				// use the long way to set the property to compile against eeminimum
-				System.getProperties().setProperty(ContainerManager.PROP_ECLIPSE_APPLICATION, arg);
-				found = true;
-			}
-
-			// done checking for args.  Remember where an arg was found 
-			if (found) {
-				configArgs[configArgIndex++] = i - 1;
-				configArgs[configArgIndex++] = i;
-			}
-		}
-
-		// remove all the arguments consumed by this argument parsing
-		if (configArgIndex == 0) {
-			appArgs = args;
-			return args;
-		}
-		appArgs = new String[args.length - configArgIndex];
-		configArgIndex = 0;
-		int j = 0;
-		for (int i = 0; i < args.length; i++) {
-			if (i == configArgs[configArgIndex])
-				configArgIndex++;
-			else
-				appArgs[j++] = args[i];
-		}
-		return appArgs;
-	}
-
-	static void openTracker(final ServiceTracker tracker, final boolean allServices) {
-		if (System.getSecurityManager() == null)
-			tracker.open(allServices);
-		else
-			AccessController.doPrivileged(new PrivilegedAction() {
-				public Object run() {
-					tracker.open(allServices);
-					return null;
-				}
-			});
-	}
-
-	static Object getService(final ServiceTracker tracker) {
-		if (System.getSecurityManager() == null)
-			return tracker.getService();
-		return AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return tracker.getService();
-			}
-		});
-	}
-
-	static String getLocation(final Bundle bundle) {
-		if (System.getSecurityManager() == null)
-			return bundle.getLocation();
-		return (String) AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return bundle.getLocation();
-			}
-		});
-	}
-
-	static BundleContext getContext() {
-		return context;
-	}
-}
diff --git a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/ContainerManager.java b/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/ContainerManager.java
deleted file mode 100755
index 8920964..0000000
--- a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/ContainerManager.java
+++ /dev/null
@@ -1,499 +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.equinox.internal.app;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.*;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.equinox.app.IContainer;
-import org.eclipse.equinox.registry.*;
-import org.eclipse.osgi.framework.log.FrameworkLog;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-import org.osgi.service.application.ApplicationDescriptor;
-import org.osgi.service.application.ApplicationHandle;
-import org.osgi.util.tracker.ServiceTracker;
-
-/*
- * A MEG application container that understands eclipse applications.  This 
- * container will discover installed eclipse applications and register the 
- * appropriate ApplicatoinDescriptor service with the service registry.
- * It also manages container extensions which are uses to launch 
- * different application types.
- */
-public class ContainerManager implements IRegistryChangeListener, SynchronousBundleListener {
-	private static final String PI_RUNTIME = "org.eclipse.core.runtime"; //$NON-NLS-1$
-	private static final String PT_APPLICATIONS = "applications"; //$NON-NLS-1$
-	private static final String PT_APP_TYPE = "type"; //$NON-NLS-1$
-	private static final String PT_APP_VISIBLE = "visible"; //$NON-NLS-1$
-	private static final String PT_APP_SINGLETON = "singleton"; //$NON-NLS-1$
-	private static final String PT_RUN = "run"; //$NON-NLS-1$
-	private static final String PT_PRODUCTS = "products"; //$NON-NLS-1$
-	private static final String PT_CONTAINERS = "containers"; //$NON-NLS-1$
-	private static final String ATTR_APPLICATION = "application"; //$NON-NLS-1$
-	private static final String EXT_ERROR_APP = "org.eclipse.equinox.app.error"; //$NON-NLS-1$
-	static final String APP_TYPE_MAIN_THREAD = "main.thread"; //$NON-NLS-1$
-
-	public static final String PROP_PRODUCT = "eclipse.product"; //$NON-NLS-1$
-	public static final String PROP_ECLIPSE_APPLICATION = "eclipse.application"; //$NON-NLS-1$
-	public static final String PROP_ECLIPSE_APPLICATION_ARGS = "eclipse.application.args"; //$NON-NLS-1$
-	public static final String PROP_ECLIPSE_APPLICATION_NODEFAULT = "eclipse.application.noDefault"; //$NON-NLS-1$
-
-	BundleContext context;
-	// A map of ApplicationDescriptors keyed by eclipse application ID
-	private HashMap apps = new HashMap();
-	// A map of containers keyed by application type
-	private HashMap containers = new HashMap();
-	// tracks the FrameworkLog
-	private ServiceTracker frameworkLog;
-	private boolean missingProductReported;
-	private IExtensionRegistry extensionRegistry;
-
-	public ContainerManager(BundleContext context, IExtensionRegistry extensionRegistry) {
-		this.context = context;
-		this.extensionRegistry = extensionRegistry;
-	}
-
-	void startManager() {
-		frameworkLog = new ServiceTracker(context, FrameworkLog.class.getName(), null);
-		frameworkLog.open();
-		getExtensionRegistry().addRegistryChangeListener(this);
-		registerAppDecriptors();
-		// need to listen for system bundle stopping
-		context.addBundleListener(this);
-		// Start the default application
-		startDefaultApp();
-	}
-
-	void stopManager() {
-		// stop all applications and containers first
-		stopAll();
-		context.removeBundleListener(this);
-		getExtensionRegistry().removeRegistryChangeListener(this);
-		frameworkLog.close();
-		frameworkLog = null;
-		// flush the apps and containers
-		apps.clear();
-		containers.clear();
-	}
-
-	/*
-	 * Only used to find the default application
-	 */
-	private EclipseAppDescriptor getAppDescriptor(String applicationId) {
-		EclipseAppDescriptor result = null;
-		synchronized (apps) {
-			result = (EclipseAppDescriptor) apps.get(applicationId);
-		}
-		if (result == null) {
-			registerAppDecriptors(); // try again just in case we are waiting for an event
-			synchronized (apps) {
-				result = (EclipseAppDescriptor) apps.get(applicationId);
-			}
-		}
-		return result;
-	}
-
-	EclipseAppDescriptor[] getAppDescriptorsByType(String type) {
-		ArrayList result = new ArrayList();
-		synchronized (apps) {
-			for (Iterator iApps = apps.values().iterator(); iApps.hasNext();) {
-				EclipseAppDescriptor app = (EclipseAppDescriptor) iApps.next();
-				if (type.equals(app.getType()))
-					result.add(app);
-			}
-		}
-		return (EclipseAppDescriptor[]) result.toArray(new EclipseAppDescriptor[result.size()]);
-	}
-
-	private IContainer getContainer(String type) {
-		synchronized (containers) {
-			IContainer container = (IContainer) containers.get(type);
-			if (container != null)
-				return container;
-			container = createContainer(type);
-			if (container != null)
-				containers.put(type, container);
-			return container;
-		}
-	}
-
-	private EclipseAppDescriptor createAppDescriptor(IExtension appExtension) {
-		synchronized (apps) {
-			EclipseAppDescriptor appDescriptor = (EclipseAppDescriptor) apps.get(appExtension.getUniqueIdentifier());
-			if (appDescriptor != null)
-				return appDescriptor;
-			// the appDescriptor does not exist for the app ID; create it
-			IConfigurationElement[] configs = appExtension.getConfigurationElements();
-			String type = null;
-			boolean visible = true;
-			if (configs.length > 0) {
-				type = configs[0].getAttribute(PT_APP_TYPE);
-				String sVisible = configs[0].getAttribute(PT_APP_VISIBLE);
-				visible = sVisible == null ? true : Boolean.valueOf(sVisible).booleanValue();
-			}
-			appDescriptor = new EclipseAppDescriptor(appExtension.getNamespace(), appExtension.getUniqueIdentifier(), type, visible, this);
-			// register the appDescriptor as a service
-			ServiceRegistration sr = (ServiceRegistration) AccessController.doPrivileged(new RegisterService(ApplicationDescriptor.class.getName(), appDescriptor, appDescriptor.getServiceProperties()));
-			appDescriptor.setServiceRegistration(sr);
-			// save the app descriptor in the cache
-			apps.put(appExtension.getUniqueIdentifier(), appDescriptor);
-			return appDescriptor;
-		}
-	}
-
-	private EclipseAppDescriptor removeAppDescriptor(String applicationId) {
-		synchronized (apps) {
-			EclipseAppDescriptor appDescriptor = (EclipseAppDescriptor) apps.remove(applicationId);
-			if (appDescriptor == null)
-				return null;
-			appDescriptor.unregister();
-			return appDescriptor;
-		}
-	}
-
-	/*
-	 * Gives access to the RegisterService privileged action.
-	 */
-	PrivilegedAction getRegServiceAction(String serviceClass, Object serviceObject, Dictionary serviceProps) {
-		return new RegisterService(serviceClass, serviceObject, serviceProps);
-	}
-
-	/*
-	 * PrivilegedAction used to register ApplicationDescriptor and ApplicationHandle services
-	 */
-	private class RegisterService implements PrivilegedAction {
-		String serviceClass;
-		Object serviceObject;
-		Dictionary serviceProps;
-
-		RegisterService(String serviceClass, Object serviceObject, Dictionary serviceProps) {
-			this.serviceClass = serviceClass;
-			this.serviceObject = serviceObject;
-			this.serviceProps = serviceProps;
-		}
-
-		public Object run() {
-			return context.registerService(serviceClass, serviceObject, serviceProps);
-		}
-	}
-
-	private void startDefaultApp() {
-		if (!Boolean.getBoolean(ContainerManager.PROP_ECLIPSE_APPLICATION_NODEFAULT)) {
-			// find the default application
-			EclipseAppDescriptor defaultDesc = findDefaultApp();
-			// if the default app is a main thread one then we have to just tell the
-			// main thread container about the default app so it can launch it when it is ready
-			if (APP_TYPE_MAIN_THREAD.equals(defaultDesc.getType())) {
-				MainThreadContainer container = (MainThreadContainer) ((SingletonContainer) getContainer(APP_TYPE_MAIN_THREAD)).getContainer();
-				container.setDefaultApp(defaultDesc);
-			} else
-				// just launch the default application
-				try {
-					defaultDesc.launch(null);
-				} catch (Exception e) {
-					// TODO should log this!!
-				}
-		}
-	}
-
-	private EclipseAppDescriptor findDefaultApp() {
-		String applicationId = System.getProperty(PROP_ECLIPSE_APPLICATION);
-		if (applicationId == null) {
-			//Derive the application from the product information
-			applicationId = getProductAppId();
-			if (applicationId != null)
-				// use the long way to set the property to compile against eeminimum
-				System.getProperties().setProperty(PROP_ECLIPSE_APPLICATION, applicationId);
-		}
-		if (applicationId == null) {
-			// the application id is not set; return a descriptor that will throw an exception
-			// return new EclipseAppDescriptor(Activator.PI_APP, Activator.PI_APP + ".missingapp", null, false, this, new RuntimeException(Messages.application_noIdFound)); //$NON-NLS-1$
-			ErrorApplication.setError(new RuntimeException(Messages.application_noIdFound));
-			return getAppDescriptor(EXT_ERROR_APP);
-		}
-		EclipseAppDescriptor defaultApp = getAppDescriptor(applicationId);
-		if (defaultApp == null) {
-			// the application id is not available in the registry; return a descriptor that will throw an exception
-			//return new EclipseAppDescriptor(applicationId, applicationId, null, false, this, new RuntimeException(NLS.bind(Messages.application_notFound, applicationId, getAvailableAppsMsg(getExtensionRegistry()))));
-			ErrorApplication.setError(new RuntimeException(NLS.bind(Messages.application_notFound, applicationId, getAvailableAppsMsg(getExtensionRegistry()))));
-			return getAppDescriptor(EXT_ERROR_APP);
-		}
-		return defaultApp;
-	}
-
-	/*
-	 * Registers an ApplicationDescriptor service for each eclipse application
-	 * available in the extension registry.
-	 */
-	private void registerAppDecriptors() {
-		// look in the old core.runtime applications extension point
-		IExtension[] availableApps = getAvailableApps(getExtensionRegistry(), PI_RUNTIME);
-		for (int i = 0; i < availableApps.length; i++)
-			createAppDescriptor(availableApps[i]);
-		// look in the new equinox.app applications extinsion point
-		availableApps = getAvailableApps(getExtensionRegistry(), Activator.PI_APP);
-		for (int i = 0; i < availableApps.length; i++)
-			createAppDescriptor(availableApps[i]);
-	}
-
-	private IContainer createContainer(String type) {
-		IExtensionPoint extPoint = getExtensionRegistry().getExtensionPoint(Activator.PI_APP, PT_CONTAINERS);
-		if (extPoint == null)
-			return null;
-		IExtension[] availableContainers = extPoint.getExtensions();
-		for (int i = 0; i < availableContainers.length; i++) {
-			IConfigurationElement[] configs = availableContainers[i].getConfigurationElements();
-			if (configs.length == 0)
-				return null;
-			String containerType = configs[0].getAttribute(PT_APP_TYPE);
-			if (type.equals(containerType)) {
-				boolean singleton = Boolean.valueOf(configs[0].getAttribute(PT_APP_SINGLETON)).booleanValue();
-				return createContainer(configs[0], type, singleton);
-			}
-		}
-		return null;
-	}
-
-	private IContainer createContainer(IConfigurationElement config, String type, boolean singleton) {
-		try {
-			IContainer container = (IContainer) config.createExecutableExtension(PT_RUN);
-			if (singleton)
-				container = new SingletonContainer(container, type, this);
-			return container;
-		} catch (CoreException e) {
-			// TODO should log this
-			e.printStackTrace();
-		}
-		return null;
-	}
-
-	private IContainer removeContainer(IExtension containerExt) {
-		IConfigurationElement[] configs = containerExt.getConfigurationElements();
-		if (configs.length == 0)
-			return null;
-		String type = configs[0].getAttribute(PT_APP_TYPE);
-		if (type == null)
-			return null;
-		// stop all applications for the container first
-		stopAllApplications(type);
-		IContainer result = null;
-		synchronized (containers) {
-			result = (IContainer) containers.remove(type);
-		}
-		// shutdown the container
-		if (result != null)
-			result.shutdown();
-		return result;
-	}
-
-	/*
-	 * Returns a list of all the available application IDs which are available 
-	 * in the extension registry.
-	 */
-	private IExtension[] getAvailableApps(IExtensionRegistry registry, String pi) {
-		IExtensionPoint point = registry.getExtensionPoint(pi + '.' + PT_APPLICATIONS);
-		if (point == null)
-			return new IExtension[0];
-		return point.getExtensions();
-	}
-
-	private String getAvailableAppsMsg(IExtensionRegistry registry) {
-		IExtension[] availableApps = getAvailableApps(registry, PI_RUNTIME);
-		String availableAppsMsg = "<NONE>"; //$NON-NLS-1$
-		if (availableApps.length != 0) {
-			availableAppsMsg = availableApps[0].getUniqueIdentifier();
-			for (int i = 1; i < availableApps.length; i++)
-				availableAppsMsg = availableAppsMsg + ", " + availableApps[i].getUniqueIdentifier(); //$NON-NLS-1$
-		}
-		availableApps = getAvailableApps(registry, Activator.PI_APP);
-		if (availableApps.length != 0) {
-			if (!availableAppsMsg.equals("<NONE>")) //$NON-NLS-1$
-				availableAppsMsg = availableAppsMsg + ", "; //$NON-NLS-1$
-			availableAppsMsg = availableAppsMsg + availableApps[0].getUniqueIdentifier();
-			for (int i = 1; i < availableApps.length; i++)
-				availableAppsMsg = availableAppsMsg + ", " + availableApps[i].getUniqueIdentifier(); //$NON-NLS-1$
-		}
-		return availableAppsMsg;
-	}
-
-	/*
-	 * Returns the application extension for the specified applicaiton ID.
-	 * A RuntimeException is thrown if the extension does not exist for the
-	 * given application ID.
-	 */
-	IExtension getAppExtension(String applicationId) {
-		IExtensionRegistry registry = getExtensionRegistry();
-		IExtension applicationExtension = registry.getExtension(PI_RUNTIME, PT_APPLICATIONS, applicationId);
-		if (applicationExtension == null)
-			applicationExtension = registry.getExtension(Activator.PI_APP, PT_APPLICATIONS, applicationId);
-		if (applicationExtension == null)
-			throw new RuntimeException(NLS.bind(Messages.application_notFound, applicationId, getAvailableAppsMsg(registry)));
-		return applicationExtension;
-	}
-
-	private IExtensionRegistry getExtensionRegistry() {
-		return extensionRegistry;
-	}
-
-	private FrameworkLog getFrameworkLog() {
-		return (FrameworkLog) AppPersistenceUtil.getService(frameworkLog);
-	}
-
-	private String getProductAppId() {
-		String productId = System.getProperty(PROP_PRODUCT);
-		if (productId == null)
-			return null;
-		IConfigurationElement[] entries = getExtensionRegistry().getConfigurationElementsFor(PI_RUNTIME, PT_PRODUCTS, productId);
-		if (entries.length > 0)
-			// There should only be one product with the given id so just take the first element
-			return entries[0].getAttribute(ATTR_APPLICATION);
-		IConfigurationElement[] elements = getExtensionRegistry().getConfigurationElementsFor(PI_RUNTIME, PT_PRODUCTS);
-		List logEntries = null;
-		for (int i = 0; i < elements.length; i++) {
-			IConfigurationElement element = elements[i];
-			if (element.getName().equalsIgnoreCase("provider")) { //$NON-NLS-1$
-				try {
-					Object provider = element.createExecutableExtension(PT_RUN);
-					Object[] products = (Object[]) ContainerManager.execMethod(provider, "getProducts", null, null); //$NON-NLS-1$
-					for (int j = 0; j < products.length; j++) {
-						Object provided = products[j];
-						if (productId.equalsIgnoreCase((String) ContainerManager.execMethod(provided, "getId", null, null))) //$NON-NLS-1$
-							return (String) ContainerManager.execMethod(provided, "getApplication", null, null); //$NON-NLS-1$
-					}
-				} catch (CoreException e) {
-					if (logEntries == null)
-						logEntries = new ArrayList(3);
-					logEntries.add(new FrameworkLogEntry(Activator.PI_APP, NLS.bind(Messages.provider_invalid, element.getParent().toString()), 0, e, null));
-				}
-			}
-		}
-		if (logEntries != null)
-			getFrameworkLog().log(new FrameworkLogEntry(Activator.PI_APP, Messages.provider_invalid_general, 0, null, (FrameworkLogEntry[]) logEntries.toArray()));
-
-		if (!missingProductReported) {
-			getFrameworkLog().log(new FrameworkLogEntry(Activator.PI_APP, NLS.bind(Messages.product_notFound, productId), 0, null, null));
-			missingProductReported = true;
-		}
-		return null;
-	}
-
-	public static Object execMethod(Object obj, String methodName, Class argType, Object arg) {
-		try {
-			Method method = obj.getClass().getMethod(methodName, argType == null ? null : new Class[] {argType});
-			return method.invoke(obj, arg == null ? null : new Object[] {arg});
-		} catch (NoSuchMethodException e) {
-			throw new IllegalArgumentException(e.getMessage());
-		} catch (IllegalArgumentException e) {
-			throw new IllegalArgumentException(e.getMessage());
-		} catch (IllegalAccessException e) {
-			throw new IllegalArgumentException(e.getMessage());
-		} catch (InvocationTargetException e) {
-			throw new IllegalArgumentException(e.getMessage());
-		}
-	}
-
-	void launch(EclipseAppHandle appHandle) throws Exception {
-		String type = ((EclipseAppDescriptor) appHandle.getApplicationDescriptor()).getType();
-		if (type == null)
-			type = APP_TYPE_MAIN_THREAD;
-		IContainer container = getContainer(type);
-		if (container != null)
-			appHandle.setApplication(container.launch(appHandle));
-		else
-			throw new UnsupportedOperationException(NLS.bind(Messages.container_notFound, appHandle.getApplicationDescriptor().getApplicationId(), type));
-	}
-
-	public void registryChanged(IRegistryChangeEvent event) {
-		processAppDeltas(event.getExtensionDeltas(PI_RUNTIME, PT_APPLICATIONS));
-		processAppDeltas(event.getExtensionDeltas(Activator.PI_APP, PT_APPLICATIONS));
-		processContainerDeltas(event.getExtensionDeltas(Activator.PI_APP, PT_CONTAINERS));
-	}
-
-	private void processAppDeltas(IExtensionDelta[] deltas) {
-		for (int i = 0; i < deltas.length; i++) {
-			switch (deltas[i].getKind()) {
-				case IExtensionDelta.ADDED :
-					createAppDescriptor(deltas[i].getExtension());
-					break;
-				case IExtensionDelta.REMOVED :
-					removeAppDescriptor(deltas[i].getExtension().getUniqueIdentifier());
-					break;
-			}
-		}
-	}
-
-	private void processContainerDeltas(IExtensionDelta[] deltas) {
-		for (int i = 0; i < deltas.length; i++) {
-			switch (deltas[i].getKind()) {
-				case IExtensionDelta.ADDED :
-					// don't create containers agressively
-					break;
-				case IExtensionDelta.REMOVED :
-					removeContainer(deltas[i].getExtension());
-					break;
-			}
-		}
-	}
-
-	public void bundleChanged(BundleEvent event) {
-		// if this is not the system bundle stopping then ignore the event
-		if ((BundleEvent.STOPPING & event.getType()) == 0 || event.getBundle().getBundleId() != 0)
-			return;
-		// The system bundle is stopping; better stop all applications and containers now
-		stopAll();
-	}
-
-	private void stopAllApplications(String type) {
-		try {
-			ServiceReference[] runningRefs = context.getServiceReferences(ApplicationHandle.class.getName(), "(&(eclipse.application.type=" + type + ")(!(application.state=STOPPING)))"); //$NON-NLS-1$ //$NON-NLS-2$
-			if (runningRefs != null)
-				for (int i = 0; i < runningRefs.length; i++) {
-					ApplicationHandle handle = (ApplicationHandle) context.getService(runningRefs[i]);
-					try {
-						handle.destroy();
-					} catch (Throwable t) {
-						// just ignore; nothing we can really do and we need to continue
-					}
-			}
-		} catch (InvalidSyntaxException e) {
-			// do nothing; we already tested the filter string above
-		}
-	}
-
-	private void stopAll() {
-		// get a stapshot of running applications
-		try {
-			ServiceReference[] runningRefs = context.getServiceReferences(ApplicationHandle.class.getName(), "(!(application.state=STOPPING))"); //$NON-NLS-1$
-			if (runningRefs != null)
-				for (int i = 0; i < runningRefs.length; i++) {
-					ApplicationHandle handle = (ApplicationHandle) context.getService(runningRefs[i]);
-					try {
-						handle.destroy();
-					} catch (Throwable t) {
-						// TODO should log this
-					}
-			}
-		} catch (InvalidSyntaxException e) {
-			// do nothing; we already tested the filter string above
-		}
-		// shutdown all containers
-		synchronized (containers) {
-			for (Iterator iContainers = containers.values().iterator(); iContainers.hasNext();)
-				((IContainer) iContainers.next()).shutdown();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/EclipseAppDescriptor.java b/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/EclipseAppDescriptor.java
deleted file mode 100755
index 02e0f45..0000000
--- a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/EclipseAppDescriptor.java
+++ /dev/null
@@ -1,161 +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.equinox.internal.app;
-
-import java.security.AccessController;
-import java.util.*;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.ServiceRegistration;
-import org.osgi.service.application.ApplicationDescriptor;
-import org.osgi.service.application.ApplicationHandle;
-import org.osgi.service.condpermadmin.BundleSignerCondition;
-import org.osgi.service.condpermadmin.ConditionInfo;
-
-/*
- * An ApplicationDescriptor for an eclipse application.
- */
-public class EclipseAppDescriptor extends ApplicationDescriptor {
-	static final String APP_TYPE = "eclipse.application.type"; //$NON-NLS-1$
-	private ServiceRegistration sr;
-	private Boolean locked = Boolean.FALSE;
-	private SingletonContainer singletonMgr;
-	private ContainerManager containerMgr;
-	private String namespace;
-	private String type;
-	private boolean visible;
-
-	protected EclipseAppDescriptor(String namespace, String pid, String type, boolean visible, ContainerManager containerMgr) {
-		super(pid);
-		this.type = type == null ? ContainerManager.APP_TYPE_MAIN_THREAD : type;
-		this.namespace = namespace;
-		this.containerMgr = containerMgr;
-		this.locked = AppPersistenceUtil.isLocked(this) ? Boolean.TRUE : Boolean.FALSE;
-		this.visible = visible;
-	}
-
-	protected Map getPropertiesSpecific(String locale) {
-		// just use the service properties; for now we do not localize any properties
-		return getServiceProperties();
-	}
-
-	protected synchronized ApplicationHandle launchSpecific(Map arguments) throws Exception {
-		// we only allow one application to run at a time; do not launch an application
-		// if one is already launched or if this application is locked.
-		if (locked.booleanValue())
-			throw new IllegalStateException("Cannot launch a locked application."); //$NON-NLS-1$
-		// initialize the appHandle
-		EclipseAppHandle appHandle = createAppHandle();
-		appHandle.setArguments(arguments);
-		try {
-			// use the containerMgr to launch the application on the main thread.
-			containerMgr.launch(appHandle);
-		} catch (Throwable t) {
-			// be sure to destroy the appHandle if an error occurs
-			appHandle.destroy();
-			if (t instanceof Exception)
-				throw (Exception) t;
-			throw (Error) t;
-		}
-		return appHandle;
-	}
-
-	protected synchronized void lockSpecific() {
-		locked = Boolean.TRUE;
-		// make sure the service properties are updated with the latest lock info
-		refreshProperties();
-	}
-
-	protected synchronized void unlockSpecific() {
-		locked = Boolean.FALSE;
-		// make sure the service properties are updated with the latest lock info
-		refreshProperties();
-	}
-
-	/*
-	 * Indicates to this descriptor that the appHandle was destroyed
-	 */
-	synchronized void appHandleDestroyed() {
-		if (singletonMgr != null)
-			singletonMgr.unlock();
-	}
-
-	void refreshProperties() {
-		if (sr != null)
-			sr.setProperties(getServiceProperties());
-	}
-
-	void setSingletonMgr(SingletonContainer singletonMgr) {
-		this.singletonMgr = singletonMgr;
-	}
-
-	void setServiceRegistration(ServiceRegistration sr) {
-		this.sr = sr;
-	}
-
-	/*
-	 * Gets a snapshot of the current service properties.
-	 */
-	Hashtable getServiceProperties() {
-		Hashtable props = new Hashtable(10);
-		props.put(ApplicationDescriptor.APPLICATION_PID, getApplicationId());
-		props.put(ApplicationDescriptor.APPLICATION_CONTAINER, Activator.PI_APP);
-		props.put(ApplicationDescriptor.APPLICATION_LOCATION, getLocation());
-		props.put(ApplicationDescriptor.APPLICATION_LAUNCHABLE, singletonMgr == null ? Boolean.TRUE : singletonMgr.isLocked() ? Boolean.FALSE : Boolean.TRUE);
-		props.put(ApplicationDescriptor.APPLICATION_LOCKED, locked);
-		props.put(ApplicationDescriptor.APPLICATION_VISIBLE, visible ? Boolean.TRUE : Boolean.FALSE);
-		props.put(EclipseAppDescriptor.APP_TYPE, getType());
-		return props;
-	}
-
-	private String getLocation() {
-		final Bundle bundle = AppPersistenceUtil.getBundle(namespace);
-		if (bundle == null)
-			return ""; //$NON-NLS-1$
-		return AppPersistenceUtil.getLocation(bundle);
-	}
-
-	/*
-	 * Returns the appHandle.  If it does not exist then one is created.
-	 */
-	private synchronized EclipseAppHandle createAppHandle() {
-		// TODO not sure what instance pid should be used; for now just use the appDesciptor pid because apps are singletons anyway
-		EclipseAppHandle newAppHandle = new EclipseAppHandle(getApplicationId(), this);
-		ServiceRegistration appHandleReg = (ServiceRegistration) AccessController.doPrivileged(containerMgr.getRegServiceAction(ApplicationHandle.class.getName(), newAppHandle, newAppHandle.getServiceProperties()));
-		newAppHandle.setServiceRegistration(appHandleReg);
-		return newAppHandle;
-	}
-
-	ContainerManager getContainerManager() {
-		return containerMgr;
-	}
-
-	String getType() {
-		return type;
-	}
-
-	public boolean matchDNChain(String pattern) {
-		Bundle bundle = AppPersistenceUtil.getBundle(namespace);
-		if (bundle == null)
-			return false;
-		return BundleSignerCondition.getCondition(bundle, new ConditionInfo(BundleSignerCondition.class.getName(), new String[] {pattern})).isSatisfied();
-	}
-
-	protected boolean isLaunchableSpecific() {
-		// TODO Auto-generated method stub
-		return true;
-	}
-
-	public void unregister() {
-		if (sr != null)
-			sr.unregister();
-	}
-}
diff --git a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/EclipseAppHandle.java b/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/EclipseAppHandle.java
deleted file mode 100755
index 9d4b963..0000000
--- a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/EclipseAppHandle.java
+++ /dev/null
@@ -1,120 +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.equinox.internal.app;
-
-import java.util.*;
-import org.eclipse.equinox.app.IAppContext;
-import org.eclipse.equinox.app.IApplication;
-import org.eclipse.equinox.registry.IConfigurationElement;
-import org.eclipse.equinox.registry.IExtension;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.ServiceRegistration;
-import org.osgi.service.application.ApplicationHandle;
-
-/*
- * An ApplicationHandle that represents a single instance of a running eclipse application.
- */
-public class EclipseAppHandle extends ApplicationHandle implements IAppContext {
-	private ServiceRegistration sr;
-	private String state = ApplicationHandle.RUNNING;
-	private int status = IAppContext.ACTIVE;
-	private Object application;
-	private Map arguments;
-
-	/*
-	 * Constructs a handle for a single running instance of a eclipse application.
-	 */
-	EclipseAppHandle(String instanceId, EclipseAppDescriptor descriptor) {
-		super(instanceId, descriptor);
-	}
-
-	synchronized public String getState() {
-		return state;
-	}
-
-	protected void destroySpecific() {
-		// when this method is called we must force the application to exit.
-		// first set the status to stopping
-		setAppStatus(IAppContext.STOPPING);
-		// now force the appliction to stop
-		if (application instanceof IApplication)
-			((IApplication) application).stop();
-		// make sure the app status is stopped
-		setAppStatus(IAppContext.STOPPED);
-	}
-
-	void setServiceRegistration(ServiceRegistration sr) {
-		this.sr = sr;
-	}
-
-	void setApplication(Object application) {
-		this.application = application;
-	}
-
-	/*
-	 * Gets a snapshot of the current service properties.
-	 */
-	Dictionary getServiceProperties() {
-		Dictionary props = new Hashtable(6);
-		props.put(ApplicationHandle.APPLICATION_PID, getInstanceId());
-		props.put(ApplicationHandle.APPLICATION_STATE, getState());
-		props.put(ApplicationHandle.APPLICATION_DESCRIPTOR, getApplicationDescriptor().getApplicationId());
-		props.put(EclipseAppDescriptor.APP_TYPE, ((EclipseAppDescriptor) getApplicationDescriptor()).getType());
-		return props;
-	}
-
-	/*
-	 * Changes the state of this handle to STOPPING.  
-	 * Finally the handle is unregistered if the status is STOPPED
-	 */
-	public synchronized void setAppStatus(int status) {
-		if ((status & IAppContext.ACTIVE) != 0)
-			throw new IllegalArgumentException("Cannot set app status to ACTIVE"); //$NON-NLS-1$
-		// if status is stopping and the context is already stopping the return
-		if ((status & IAppContext.STOPPING) != 0)
-			if (ApplicationHandle.STOPPING.equals(state))
-				return;
-		// in both cases if the the context is not stopping then set it and
-		// change the service properties to reflect the state change.
-		if (state != ApplicationHandle.STOPPING) {
-			state = ApplicationHandle.STOPPING;
-			sr.setProperties(getServiceProperties());
-		}
-		// if the status is stopped then unregister the service
-		if ((status & IAppContext.STOPPED) != 0 && (this.status & IAppContext.STOPPED) == 0) {
-			sr.unregister();
-			((EclipseAppDescriptor) getApplicationDescriptor()).appHandleDestroyed();
-		}
-		this.status = status;
-	}
-
-	public int getAppStatus() {
-		return status;
-	}
-
-	public Map getArguments() {
-		return arguments;
-	}
-
-	void setArguments(Map arguments) {
-		this.arguments = arguments;
-	}
-
-	public IConfigurationElement getConfiguration() {
-		IExtension applicationExtension = ((EclipseAppDescriptor) getApplicationDescriptor()).getContainerManager().getAppExtension(getApplicationDescriptor().getApplicationId());
-		IConfigurationElement[] configs = applicationExtension.getConfigurationElements();
-		if (configs.length == 0)
-			throw new RuntimeException(NLS.bind(Messages.application_invalidExtension, getApplicationDescriptor().getApplicationId()));
-		return configs[0];
-	}
-
-}
diff --git a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/EclipseScheduledApplication.java b/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/EclipseScheduledApplication.java
deleted file mode 100755
index 33a75ca..0000000
--- a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/EclipseScheduledApplication.java
+++ /dev/null
@@ -1,130 +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.equinox.internal.app;
-
-import java.security.Guard;
-import java.security.GuardedObject;
-import java.util.HashMap;
-import java.util.Map;
-import org.osgi.framework.*;
-import org.osgi.service.application.ApplicationDescriptor;
-import org.osgi.service.application.ScheduledApplication;
-import org.osgi.service.event.*;
-import org.osgi.util.tracker.ServiceTracker;
-
-public class EclipseScheduledApplication implements ScheduledApplication, EventHandler {
-	private static final String FILTER_PREFIX = "(&(objectclass=" + ApplicationDescriptor.class.getName() + ")(" + ApplicationDescriptor.APPLICATION_PID + "="; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	private static final String FILTER_POSTFIX = "))"; //$NON-NLS-1$
-	private static final String TRIGGERING_EVENT = "org.osgi.triggeringevent"; //$NON-NLS-1$
-
-	private boolean recurring;
-	private String topic;
-	private String eventFilter;
-	private Map args;
-	private String appPid;
-	private Integer id;
-	private ServiceRegistration sr;
-	private ServiceTracker appTracker;
-	private boolean removed = false;
-
-	EclipseScheduledApplication(BundleContext context, Integer id, String appPid, Map args, String topic, String eventFilter, boolean recurring) throws InvalidSyntaxException {
-		this.id = id;
-		this.appPid = appPid;
-		this.args = args;
-		this.topic = topic == null || topic.trim().equals("") || topic.trim().equals("*") ? null : topic; //$NON-NLS-1$ //$NON-NLS-2$
-		this.eventFilter = eventFilter;
-		this.recurring = recurring;
-		appTracker = new ServiceTracker(context, context.createFilter(FILTER_PREFIX + appPid + FILTER_POSTFIX), null);
-		AppPersistenceUtil.openTracker(appTracker, false);
-	}
-
-	Integer getID() {
-		return id;
-	}
-
-	String getAppPid() {
-		return appPid;
-	}
-
-	public String getTopic() {
-		return topic;
-	}
-
-	public String getEventFilter() {
-		return eventFilter;
-	}
-
-	public boolean isRecurring() {
-		return recurring;
-	}
-
-	public synchronized ApplicationDescriptor getApplicationDescriptor() {
-		if (removed)
-			throw new IllegalStateException(Messages.EclipseScheduledApplication_7);
-		return (ApplicationDescriptor) AppPersistenceUtil.getService(appTracker);
-	}
-
-	public Map getArguments() {
-		return args == null ? null : new HashMap(args);
-	}
-
-	private Map getArguments(Event trigger) {
-		Map result = args == null ? new HashMap() : getArguments();
-		result.put(TRIGGERING_EVENT, new GuardedObject(trigger, new TriggerGuard(trigger.getTopic())));
-		return result;
-	}
-
-	public synchronized void remove() {
-		if (removed)
-			return;
-		removed = true;
-		AppPersistenceUtil.removeScheduledApp(this);
-		if (sr != null)
-			sr.unregister();
-		appTracker.close();
-	}
-
-	public synchronized void handleEvent(Event event) {
-		try {
-			ApplicationDescriptor desc = getApplicationDescriptor();
-			if (desc == null)
-				return;
-			desc.launch(getArguments(event));
-		} catch (Exception e) {
-			// TODO should log this
-			return; // return here to avoid removing non-recurring apps when an error occurs
-		}
-		if (!isRecurring())
-			remove();
-	}
-
-	void setServiceRegistration(ServiceRegistration sr) {
-		this.sr = sr;
-		if (removed) // just incase we were removed before the sr was set
-			sr.unregister();
-	}
-
-	public class TriggerGuard implements Guard {
-		String eventTopic;
-
-		public TriggerGuard(String topic) {
-			this.eventTopic = topic;
-		}
-
-		public void checkGuard(Object object) throws SecurityException {
-			SecurityManager sm = System.getSecurityManager();
-			if (sm != null)
-				sm.checkPermission(new TopicPermission(eventTopic, TopicPermission.SUBSCRIBE));
-		}
-
-	}
-}
diff --git a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/ErrorApplication.java b/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/ErrorApplication.java
deleted file mode 100755
index ba58eaf..0000000
--- a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/ErrorApplication.java
+++ /dev/null
@@ -1,37 +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.equinox.internal.app;
-
-import org.eclipse.equinox.app.IApplication;
-
-/*
- * Special case class only used to throw exceptions when an application
- * cannot be found.
- */
-public class ErrorApplication implements IApplication {
-
-	static private Exception ERROR;
-
-	public Object run(Object args) throws Exception {
-		if (ERROR != null)
-			throw ERROR;
-		throw new IllegalStateException();
-	}
-
-	public void stop() {
-		// do nothing
-	}
-
-	static void setError(Exception error) {
-		ERROR = error;
-	}
-}
diff --git a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/MainThreadApplication.java b/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/MainThreadApplication.java
deleted file mode 100755
index d4a6e7d..0000000
--- a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/MainThreadApplication.java
+++ /dev/null
@@ -1,70 +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.equinox.internal.app;
-
-import org.eclipse.equinox.app.IAppContext;
-import org.eclipse.equinox.app.IApplication;
-import org.eclipse.osgi.service.runnable.ApplicationRunnable;
-import org.eclipse.osgi.util.NLS;
-
-public class MainThreadApplication implements ApplicationRunnable {
-	private static final String PROP_ECLIPSE_EXITCODE = "eclipse.exitcode"; //$NON-NLS-1$
-	private Object application;
-	private EclipseAppHandle appContext;
-	private Exception launchException;
-
-	public MainThreadApplication(EclipseAppHandle appContext) {
-		this.appContext = appContext;
-		try {
-			application = appContext.getConfiguration().createExecutableExtension("run"); //$NON-NLS-1$
-		} catch (Exception e) {
-			// had an error creating the executable extension
-			// save the exception to throw on the main thread (keeping legacy behavior)
-			this.launchException = e;
-		}
-	}
-
-	public Object run(Object context) throws Exception {
-		// if the given arg is null then pass in the left over command line args.
-		if (context == null)
-			context = AppPersistenceUtil.getApplicationArgs();
-		Object result;
-		try {
-			if (launchException != null)
-				// this is a dummy handle used to throw an exception on the main thread.
-				throw launchException;
-			if (application instanceof IApplication) {
-				result = ((IApplication) application).run(context);
-			} else
-				result = ContainerManager.execMethod(application, "run", Object.class, context); //$NON-NLS-1$
-		} finally {
-			application = null;
-			// The application exited itself; notify the app context
-			appContext.setAppStatus(IAppContext.STOPPED);
-		}
-		int exitCode = result instanceof Integer ? ((Integer) result).intValue() : 0;
-		// use the long way to set the property to compile against eeminimum
-		System.getProperties().setProperty(PROP_ECLIPSE_EXITCODE, Integer.toString(exitCode));
-		if (Activator.DEBUG)
-			System.out.println(NLS.bind(Messages.application_returned, (new String[] {appContext.getApplicationDescriptor().getApplicationId(), result == null ? "null" : result.toString()}))); //$NON-NLS-1$
-		return result;
-	}
-
-	public void stop() {
-		// we can only handle forced stops if this application is an IApplication
-		if (application instanceof IApplication)
-			((IApplication) application).stop();
-	}
-
-	IApplication getApplication() {
-		return (IApplication) ((application instanceof IApplication) ? application : null);
-	}
-}
diff --git a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/MainThreadContainer.java b/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/MainThreadContainer.java
deleted file mode 100755
index 203aa96..0000000
--- a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/MainThreadContainer.java
+++ /dev/null
@@ -1,78 +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.equinox.internal.app;
-
-import org.eclipse.equinox.app.*;
-import org.eclipse.osgi.service.runnable.ApplicationLauncher;
-import org.osgi.framework.ServiceReference;
-import org.osgi.util.tracker.ServiceTracker;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-
-public class MainThreadContainer implements IContainer, ServiceTrackerCustomizer {
-	// tracks the application launcher
-	private ServiceTracker appLauncherTracker;
-	// the application launcher used to launch applications on the main thread.
-	private ApplicationLauncher appLauncher;
-	// the default app to launch once we are ready
-	private EclipseAppDescriptor defaultDesc;
-
-	public MainThreadContainer() {
-		appLauncherTracker = new ServiceTracker(AppPersistenceUtil.getContext(), ApplicationLauncher.class.getName(), this);
-		appLauncherTracker.open();
-	}
-
-	public IApplication launch(IAppContext appContext) {
-		// use the ApplicationLauncher provided by the framework 
-		// to ensure it is launched on the main thread
-		if (appLauncher == null)
-			throw new IllegalStateException();
-		MainThreadApplication app = new MainThreadApplication((EclipseAppHandle) appContext);
-		appLauncher.launch(app, appContext.getArguments() == null ? null : appContext.getArguments().get(ContainerManager.PROP_ECLIPSE_APPLICATION_ARGS));
-		return app.getApplication();
-	}
-
-	public Object addingService(ServiceReference reference) {
-		if (appLauncher != null)
-			return null;
-		appLauncher = (ApplicationLauncher) AppPersistenceUtil.getContext().getService(reference);
-		if (defaultDesc != null)
-			// launch the default application
-			try {
-				defaultDesc.launch(null);
-				defaultDesc = null; // don't want to launch it more than once
-			} catch (Exception e) {
-				// TODO should log this!!
-			}
-		return appLauncher;
-	}
-
-	public void modifiedService(ServiceReference reference, Object service) {
-		// do nothing
-	}
-
-	public synchronized void removedService(ServiceReference reference, Object service) {
-		if (service == appLauncher) {
-			appLauncher = null;
-			AppPersistenceUtil.getContext().ungetService(reference);
-		}
-	}
-
-	public void shutdown() {
-		if (appLauncherTracker != null) {
-			appLauncherTracker.close();
-			appLauncherTracker = null;
-		}
-	}
-
-	public void setDefaultApp(EclipseAppDescriptor defaultDesc) {
-		this.defaultDesc = defaultDesc;
-	}
-}
diff --git a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/Messages.java b/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/Messages.java
deleted file mode 100755
index 61938d0..0000000
--- a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/Messages.java
+++ /dev/null
@@ -1,42 +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.equinox.internal.app;
-
-import org.eclipse.osgi.util.NLS;
-
-public class Messages extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.equinox.internal.app.messages"; //$NON-NLS-1$
-
-	// application
-	public static String application_invalidExtension;
-	public static String application_noIdFound;
-	public static String application_notFound;
-	public static String application_returned;
-
-	// product
-	public static String provider_invalid;
-	public static String provider_invalid_general;
-	public static String product_notFound;
-
-	// container
-	public static String container_notFound;
-
-	static {
-		// load message values from bundle file
-		reloadMessages();
-	}
-
-	public static void reloadMessages() {
-		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
-	}
-
-	public static String EclipseScheduledApplication_7;
-}
diff --git a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/SingletonContainer.java b/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/SingletonContainer.java
deleted file mode 100755
index 8b61fee..0000000
--- a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/SingletonContainer.java
+++ /dev/null
@@ -1,68 +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.equinox.internal.app;
-
-import org.eclipse.equinox.app.*;
-
-public class SingletonContainer implements IContainer {
-	private EclipseAppHandle singletonHandle;
-	private String type;
-	private IContainer singletonContainer;
-	private ContainerManager containerManager;
-
-	public SingletonContainer(IContainer singletonContainer, String type, ContainerManager containerManager) {
-		this.singletonContainer = singletonContainer;
-		this.type = type;
-		this.containerManager = containerManager;
-	}
-
-	public synchronized IApplication launch(IAppContext context) throws Exception {
-		// attempt to lock this application type; an exception will be thrown if the type cannot be locked
-		lock((EclipseAppHandle) context);
-		return singletonContainer.launch(context);
-	}
-
-	public boolean isSingletonContainer() {
-		return true;
-	}
-
-	synchronized boolean isLocked() {
-		return singletonHandle != null;
-	}
-
-	synchronized void lock(EclipseAppHandle appHandle) {
-		if (singletonHandle != null)
-			throw new IllegalStateException("Only one application of type \"" + type + "\" is allowed to run at a time");
-		singletonHandle = appHandle;
-		refreshAppDescriptors();
-	}
-
-	synchronized void unlock() {
-		singletonHandle = null;
-		refreshAppDescriptors();
-	}
-
-	private void refreshAppDescriptors() {
-		EclipseAppDescriptor[] singletonApps = containerManager.getAppDescriptorsByType(type);
-		for (int i = 0; i < singletonApps.length; i++) {
-			singletonApps[i].setSingletonMgr(this);
-			singletonApps[i].refreshProperties();
-		}
-	}
-
-	public void shutdown() {
-		singletonContainer.shutdown();
-	}
-
-	IContainer getContainer() {
-		return singletonContainer;
-	}
-}
diff --git a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/messages.properties b/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/messages.properties
deleted file mode 100755
index 8bd877f..0000000
--- a/bundles/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/messages.properties
+++ /dev/null
@@ -1,26 +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
-###############################################################################
-### Equinox AppContainer plugin messages
-
-### application
-application_invalidExtension = Invalid (empty) application extension \"{0}\".
-application_noIdFound = No application id has been found.
-application_notFound=Application \"{0}\" could not be found in the registry. The applications available are: {1}.
-application_returned=The application \"{0}\" returned with code: {1}.
-
-### product
-provider_invalid_general = Errors while processing the product providers.
-provider_invalid = Problem creating the provider registered by {0}.
-product_notFound = Product {0} could not be found.
-
-## container
-container_notFound = No container is available to launch the application \"{0}\" of type \"{1}\".
-EclipseScheduledApplication_7=Application has been unregistered
diff --git a/bundles/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationAdminPermission.java b/bundles/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationAdminPermission.java
deleted file mode 100755
index 4cbab14..0000000
--- a/bundles/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationAdminPermission.java
+++ /dev/null
@@ -1,403 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.service.application/src/org/osgi/service/application/ApplicationAdminPermission.java,v 1.31 2005/12/20 11:23:39 ckarai Exp $
- * 
- * Copyright (c) OSGi Alliance (2004, 2005). All Rights Reserved.
- * 
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this 
- * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html.
- */
-
-package org.osgi.service.application;
-
-import java.security.Permission;
-import java.util.Hashtable;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-import org.osgi.framework.Filter;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.InvalidSyntaxException;
-
-/**
- * This class implements permissions for manipulating applications and
- * their instances.
- * <P>
- * ApplicationAdminPermission can be targeted to applications that matches the
- * specified filter.
- * <P>
- * ApplicationAdminPermission may be granted for different actions:
- * <code>lifecycle</code>, <code>schedule</code> and <code>lock</code>.
- * The permission <code>schedule</code> implies the permission
- * <code>lifecycle</code>.
- */
-public class ApplicationAdminPermission extends Permission {
-	private static final long serialVersionUID = 1L;
-  
-	/**
-	 * Allows the lifecycle management of the target applications.
-	 */
-	public static final String LIFECYCLE_ACTION = "lifecycle";
-
-	/**
-	 * Allows scheduling of the target applications. The permission to
-	 * schedule an application implies that the scheduler can also 
-	 * manage the lifecycle of that application i.e. <code>schedule</code>
-	 * implies <code>lifecycle</code>
-	 */
-	public static final String SCHEDULE_ACTION = "schedule";
-
-	/**
-	 * Allows setting/unsetting the locking state of the target applications.
-	 */
-	public static final String LOCK_ACTION = "lock";
-
-	private ApplicationDescriptor	applicationDescriptor;
-
-	/**
-	 * Constructs an ApplicationAdminPermission. The <code>filter</code>
-	 * specifies the target application. The <code>filter</code> is an
-	 * LDAP-style filter, the recognized properties are <code>signer</code>
-	 * and <code>pid</code>. The pattern specified in the <code>signer</code>
-	 * is matched with the Distinguished Name chain used to sign the application. 
-	 * Wildcards in a DN are not matched according to the filter string rules, 
-	 * but according to the rules defined for a DN chain. The attribute 
-	 * <code>pid</code> is matched with the PID of the application according to
-	 * the filter string rules. 
-	 * <p>
-	 * If the <code>filter</code> is <code>null</code> then it matches 
-	 * <code>"*"</code>. If
-	 * <code>actions</code> is <code>"*"</code> then it identifies all the
-	 * possible actions.
-	 * 
-	 * @param filter
-	 *            filter to identify application. The value <code>null</code>
-	 *            is equivalent to <code>"*"</code> and it indicates "all application".
-	 * @param actions
-	 *            comma-separated list of the desired actions granted on the
-	 *            applications or "*" means all the actions. It must not be
-	 *            <code>null</code>. The order of the actions in the list is
-	 *            not significant.
-	 * @throws InvalidSyntaxException 
-	 *            is thrown if the specified <code>filter</code> is not syntactically
-	 *            correct.
-	 * 
-	 * @exception NullPointerException
-	 *                is thrown if the actions parameter is <code>null</code>
-	 * 
-	 * @see ApplicationDescriptor
-	 * @see org.osgi.framework.AdminPermission
-	 */
-	public ApplicationAdminPermission(String filter, String actions) throws InvalidSyntaxException {
-		super(filter == null ? "*" : filter);
-		
-		if( filter == null )
-			filter = "*";
-		
-		if( actions == null )
-			throw new NullPointerException( "Action string cannot be null!" );
-		
-		this.applicationDescriptor = null;
-		this.filter = (filter == null ? "*" : filter);
-		this.actions = actions;
-
-		if( !filter.equals( "*" ) && !filter.equals( "<<SELF>>" ) )
-			FrameworkUtil.createFilter( this.filter ); // check if the filter is valid
-		init();
-	}
-	
-	/**
-	 * This contructor should be used when creating <code>ApplicationAdminPermission</code>
-	 * instance for <code>checkPermission</code> call. 
-	 * @param application the tareget of the operation, it must not be <code>null</code>
-	 * @param actions the required operation. it must not be <code>null</code>
-	 * @throws NullPointerException if any of the arguments is null. 
-	 */
-	public ApplicationAdminPermission(ApplicationDescriptor application, String actions) {
-		super(application.getApplicationId());
-				
-		if( application == null || actions == null )
-			throw new NullPointerException( "ApplicationDescriptor and action string cannot be null!" );
-		
-		this.filter = application.getApplicationId();
-		this.applicationDescriptor = application;
-		this.actions = actions;
-		
-		init();
-	}
-	
-	/**
-	 * This method can be used in the {@link java.security.ProtectionDomain}
-	 * implementation in the <code>implies</code> method to insert the
-	 * application ID of the current application into the permission being
-	 * checked. This enables the evaluation of the 
-	 * <code>&lt;&lt;SELF&gt;&gt;</code> pseudo targets.
-	 * @param applicationId the ID of the current application.
-	 * @return the permission updated with the ID of the current application
-	 */
-	public ApplicationAdminPermission setCurrentApplicationId(String applicationId) {
-		ApplicationAdminPermission newPerm = null;
-		
-		if( this.applicationDescriptor == null ) {
-			try {
-				newPerm = new ApplicationAdminPermission( this.filter, this.actions );
-			}catch( InvalidSyntaxException e ) {
-				throw new RuntimeException( "Internal error" ); /* this can never happen */
-			}
-		}
-		else	
-		    newPerm = new ApplicationAdminPermission( this.applicationDescriptor, this.actions );
-		
-		newPerm.applicationID = applicationId;
-		
-		return newPerm;
-	}
-
-	/**
-	 * Checks if the specified <code>permission</code> is implied by this permission.
-	 * The method returns true under the following conditions:
-	 * <UL>
-	 * <LI> This permission was created by specifying a filter (see {@link #ApplicationAdminPermission(String, String)})
-	 * <LI> The implied <code>otherPermission</code> was created for a particular {@link ApplicationDescriptor}
-	 *      (see {@link #ApplicationAdminPermission(ApplicationDescriptor, String)})
-	 * <LI> The <code>filter</code> of this permission mathes the <code>ApplicationDescriptor</code> specified
-	 *      in the <code>otherPermission</code>. If the filter in this permission is the 
-	 *      <code>&lt;&lt;SELF&gt;&gt;</code> pseudo target, then the currentApplicationId set in the 
-	 *      <code>otherPermission</code> is compared to the application Id of the target 
-	 *      <code>ApplicationDescriptor</code>.
-	 * <LI> The list of permitted actions in this permission contains all actions required in the 
-	 *      <code>otherPermission</code>  
-	 * </UL> 
-	 * Otherwise the method returns false.
-	 * @param otherPermission the implied permission
-	 * @return true if this permission implies the <code>otherPermission</code>, false otherwise.
-	 */
-  public boolean implies(Permission otherPermission) {
-  	  if( otherPermission == null )
-  	  	return false;
-  	  	
-      if(!(otherPermission instanceof ApplicationAdminPermission))
-          return false;
-
-      ApplicationAdminPermission other = (ApplicationAdminPermission) otherPermission;
-
-      if( !filter.equals("*") ) {
-       	if( other.applicationDescriptor == null )
-       		return false;
-       	
-      	if( filter.equals( "<<SELF>>") ) {
-            if( other.applicationID == null )
-          		return false; /* it cannot be, this might be a bug */
-            
-      		if( !other.applicationID.equals( other.applicationDescriptor.getApplicationId() ) )
-      			return false;
-      	}
-      	else {
-      		Hashtable props = new Hashtable();
-      		props.put( "pid", other.applicationDescriptor.getApplicationId() );
-      		props.put( "signer", new SignerWrapper( other.applicationDescriptor ) );
-      		      		
-      		Filter flt = getFilter();
-      		if( flt == null )
-      			return false;
-      		
-      		if( !flt.match( props ) )
-      			return false;
-      	}
-      }
-      
-      if( !actionsVector.containsAll( other.actionsVector ) )
-      	return false;
-      
-      return true;
-  }
-
-  public boolean equals(Object with) {
-  	if( with == null || !(with instanceof ApplicationAdminPermission) )
-  		return false;
-  	
-  	ApplicationAdminPermission other = (ApplicationAdminPermission)with;  	
-  	
-  	// Compare actions:
-  	if( other.actionsVector.size() != actionsVector.size() )
-  		return false;
-  	
-  	for( int i=0; i != actionsVector.size(); i++ )
-  		if( !other.actionsVector.contains( actionsVector.get( i ) ) )
-  			return false;
-  	
-  	
-  	return equal(this.filter, other.filter ) && equal(this.applicationDescriptor, other.applicationDescriptor)
-  			&& equal(this.applicationID, other.applicationID);
-  }
-  
-  /**
-   * Compares parameters for equality. If both object are null, they are considered
-   * equal.
-   * @param a object to compare
-   * @param b other object to compare
-   * @return true if both objects are equal or both are null
-   */
-  private static boolean equal(Object a, Object b) {
-	  // This equation is true if both references are null or both point
-	  // to the same object. In both cases they are considered as equal.
-	  if( a == b ) {
-		  return true;
-	  }
-	  
-	  return a.equals(b);
-  }
-
-  public int hashCode() {
-	  int hc = 0;
-	  for( int i=0; i != actionsVector.size(); i++ )
-		  hc ^= ((String)actionsVector.get( i )).hashCode();
-	  hc ^= (null == this.filter )? 0 : this.filter.hashCode();
-	  hc ^= (null == this.applicationDescriptor) ? 0 : this.applicationDescriptor.hashCode();
-	  hc ^= (null == this.applicationID) ? 0 : this.applicationID.hashCode();
-	  return hc;
-  }
-
-  /**
-   * Returns the actions of this permission.
-   * @return the actions specified when this permission was created
-   */
-  public String getActions() {
-  	return actions;
-  }
-
-  private String applicationID;
-
-  private static final Vector ACTIONS = new Vector();
-  private              Vector actionsVector;
-  private final        String filter;
-  private final        String actions;
-  private              Filter appliedFilter = null; 
-  
-  static {
-      ACTIONS.add(LIFECYCLE_ACTION);
-      ACTIONS.add(SCHEDULE_ACTION);
-      ACTIONS.add(LOCK_ACTION);
-  }
-
-  private static Vector actionsVector(String actions) {
-      Vector v = new Vector();
-      StringTokenizer t = new StringTokenizer(actions.toUpperCase(), ",");
-      while (t.hasMoreTokens()) {
-          String action = t.nextToken().trim();
-          v.add(action.toLowerCase());
-      }
-      
-      if( v.contains( SCHEDULE_ACTION ) && !v.contains( LIFECYCLE_ACTION ) )
-    	  v.add( LIFECYCLE_ACTION );
-      
-      return v;
-  }
-  
-
-  private static class SignerWrapper extends Object {
-  	private String pattern;
-  	private ApplicationDescriptor appDesc;
-  	
-  	public SignerWrapper(String pattern) {
-  		this.pattern = pattern;    			
-  	}
-  	
-  	SignerWrapper(ApplicationDescriptor appDesc) {
-  		this.appDesc = appDesc;
-  	}
-  	
-  	public boolean equals(Object o) {
-  		if (!(o instanceof SignerWrapper))
-  			return false;
-  		SignerWrapper other = (SignerWrapper) o;
-  		ApplicationDescriptor matchAppDesc = (ApplicationDescriptor) (appDesc != null ? appDesc : other.appDesc);
-  		String matchPattern = appDesc != null ? other.pattern : pattern;
-  		return matchAppDesc.matchDNChain(matchPattern);
-  	}
-  }
-  
-  private void init() {
-		actionsVector = actionsVector( actions );
-
-		if ( actions.equals("*") )
-			actionsVector = actionsVector( LIFECYCLE_ACTION + "," + SCHEDULE_ACTION + "," + LOCK_ACTION );
-		else if (!ACTIONS.containsAll(actionsVector))
-      throw new IllegalArgumentException("Illegal action!");
-		
-		applicationID = null;
-  }
-  
-  private Filter getFilter() {
-  	String transformedFilter = filter;
-  	
-  	if (appliedFilter == null) {
-  		try {
-  			int pos = filter.indexOf("signer"); //$NON-NLS-1$
-  			if (pos != -1){ 
-  			
-  				//there may be a signer attribute 
-    			StringBuffer filterBuf = new StringBuffer(filter);
-    			int numAsteriskFound = 0; //use as offset to replace in buffer
-    			
-    			int walkbackPos; //temp pos
-
-    			//find occurences of (signer= and escape out *'s
-    			while (pos != -1) {
-
-    				//walk back and look for '(' to see if this is an attr
-    				walkbackPos = pos-1; 
-    				
-    				//consume whitespace
-    				while(walkbackPos >= 0 && Character.isWhitespace(filter.charAt(walkbackPos))) {
-    					walkbackPos--;
-    				}
-    				if (walkbackPos <0) {
-    					//filter is invalid - FilterImpl will throw error
-    					break;
-    				}
-    				
-    				//check to see if we have unescaped '('
-    				if (filter.charAt(walkbackPos) != '(' || (walkbackPos > 0 && filter.charAt(walkbackPos-1) == '\\')) {
-    					//'(' was escaped or not there
-    					pos = filter.indexOf("signer",pos+6); //$NON-NLS-1$
-    					continue;
-    				}     				
-    				pos+=6; //skip over 'signer'
-
-    				//found signer - consume whitespace before '='
-    				while (Character.isWhitespace(filter.charAt(pos))) {
-    					pos++;
-    				}
-
-    				//look for '='
-    				if (filter.charAt(pos) != '=') {
-    					//attr was signerx - keep looking
-    					pos = filter.indexOf("signer",pos); //$NON-NLS-1$
-    					continue;
-    				}
-    				pos++; //skip over '='
-    				
-    				//found signer value - escape '*'s
-    				while (!(filter.charAt(pos) == ')' && filter.charAt(pos-1) != '\\')) {
-    					if (filter.charAt(pos) == '*') {
-    						filterBuf.insert(pos+numAsteriskFound,'\\');
-    						numAsteriskFound++;
-    					}
-    					pos++;
-    				}
-
-    				//end of signer value - look for more?
-    				pos = filter.indexOf("signer",pos); //$NON-NLS-1$
-    			} //end while (pos != -1)
-    			transformedFilter = filterBuf.toString();
-  			} //end if (pos != -1)
-
-  			appliedFilter = FrameworkUtil.createFilter( transformedFilter );
-		} catch (InvalidSyntaxException e) {
-			//we will return null
-		}
-  	}     		
-  	return appliedFilter;
-  }
-}
diff --git a/bundles/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationDescriptor.java b/bundles/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationDescriptor.java
deleted file mode 100755
index 4b60d73..0000000
--- a/bundles/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationDescriptor.java
+++ /dev/null
@@ -1,501 +0,0 @@
-/*
- * $Header: /cvsroot/eclipse/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationDescriptor.java,v 1.3 2006/01/16 19:45:25 twatson Exp $
- * 
- * Copyright (c) OSGi Alliance (2004, 2005). All Rights Reserved.
- * 
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this 
- * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html.
- */
-
-package org.osgi.service.application;
-
-import java.util.Iterator;
-import java.util.Map;
-import org.eclipse.equinox.internal.app.AppPersistenceUtil;
-import org.osgi.framework.Constants;
-import org.osgi.framework.InvalidSyntaxException;
-
-/**
- * An OSGi service that represents an installed application and stores
- * information about it. The application descriptor can be used for instance
- * creation.
- */
-
-public abstract class ApplicationDescriptor {
-
-	/**
-	 * The property key for the localized name of the application.
-	 */
-	public static final String APPLICATION_NAME = "application.name";
-
-	/**
-	 * The property key for the localized icon of the application.
-	 */
-	public static final String APPLICATION_ICON = "application.icon";
-
-	/**
-	 * The property key for the unique identifier (PID) of the application.
-	 */
-	public static final String APPLICATION_PID = Constants.SERVICE_PID;
-
-	/**
-	 * The property key for the version of the application.
-	 */
-	public static final String APPLICATION_VERSION = "application.version";
-
-	/**
-	 * The property key for the name of the application vendor.
-	 */
-	public static final String APPLICATION_VENDOR = Constants.SERVICE_VENDOR;
-
-
-	/**
-	 * The property key for the visibility property of the application.
-	 */
-	public static final String APPLICATION_VISIBLE = "application.visible";
-
-	/**
-	 * The property key for the launchable property of the application.
-	 */
-	public static final String APPLICATION_LAUNCHABLE = "application.launchable";
-
-	/**
-	 * The property key for the locked property of the application.
-	 */
-	public static final String APPLICATION_LOCKED = "application.locked";
-
-	/**
-	 * The property key for the localized description of the application.
-	 */
-	public static final String APPLICATION_DESCRIPTION = "application.description";
-
-	/**
-	 * The property key for the localized documentation of the application.
-	 */
-	public static final String APPLICATION_DOCUMENTATION = "application.documentation";
-
-	/**
-	 * The property key for the localized copyright notice of the application.
-	 */
-	public static final String APPLICATION_COPYRIGHT = "application.copyright";
-
-	/**
-	 * The property key for the localized license of the application.
-	 */
-	public static final String APPLICATION_LICENSE = "application.license";
-
-	/**
-	 * The property key for the application container of the application.
-	 */
-	public static final String APPLICATION_CONTAINER = "application.container";
-
-	/**
-	 * The property key for the location of the application.
-	 */
-	public static final String APPLICATION_LOCATION = "application.location";
-
-	
-	/**
-	 * Constructs the <code>ApplicationDescriptor</code>.
-	 *
-	 * @param applicationId
-	 *            The identifier of the application. Its value is also available
-	 *            as the <code>service.pid</code> service property of this 
-	 *            <code>ApplicationDescriptor</code> service. This parameter must not
-	 *            be <code>null</code>.
-	 * @throws NullPointerException if the specified <code>applicationId</code> is null.
-	 */
-	protected  ApplicationDescriptor(String applicationId) {
-		if(null == applicationId ) {
-			throw new NullPointerException("Application ID must not be null!");
-		}
-		
-		this.pid = applicationId;
-		locked[0] = isLocked();
-	}
-
-	/**
-	 * Returns the identifier of the represented application.
-	 * 
-	 * @return the identifier of the represented application
-	 */
-	public final String getApplicationId() {
-		return pid;
-	}
-
-	/**
-	 * This method verifies whether the specified <code>pattern</code>
-	 * matches the Distinguished Names of any of the certificate chains
-	 * used to authenticate this application.
-	 * <P>
-	 * The <code>pattern</code> must adhere to the 
-	 * syntax defined in {@link org.osgi.service.application.ApplicationAdminPermission}
-	 * for signer attributes. 
-	 * <p>
-	 * This method is used by {@link ApplicationAdminPermission#implies(java.security.Permission)} method
-	 * to match target <code>ApplicationDescriptor</code> and filter. 
-	 * 
-	 * @param pattern a pattern for a chain of Distinguished Names. It must not be null.
-	 * @return <code>true</code> if the specified pattern matches at least
-	 *   one of the certificate chains used to authenticate this application 
-	 * @throws NullPointerException if the specified <code>pattern</code> is null.
-	 */	
-	public abstract boolean matchDNChain( String pattern );
-	
-	/**
-	 * Returns the properties of the application descriptor as key-value pairs.
-	 * The return value contains the locale aware and unaware properties as
-	 * well. The returned <code>Map</code> will include the service
-	 * properties of this <code>ApplicationDescriptor</code> as well.
-	 * <p>
-	 * This method will call the <code>getPropertiesSpecific</code> method
-	 * to enable the container implementation to insert application model and/or
-	 * container implementation specific properties.
-	 * <P>
-	 * The returned {@link java.util.Map} will contain the standard OSGi service 
-	 * properties as well
-	 * (e.g. service.id, service.vendor etc.) and specialized application
-	 * descriptors may offer further service properties. The returned Map contains
-	 * a snapshot of the properties. It will not reflect further changes in the
-	 * property values nor will the update of the Map change the corresponding
-	 * service property.
-	 *   
-	 * @param locale
-	 *            the locale string, it may be null, the value null means the
-	 *            default locale. If the provided locale is the empty String 
-	 *            (<code>""</code>)then raw (non-localized) values are returned.
-	 * 
-	 * @return copy of the service properties of this application descriptor service,
-	 *         according to the specified locale. If locale is null then the
-	 *         default locale's properties will be returned. (Since service
-	 *         properties are always exist it cannot return null.)
-	 * 
-	 * @throws IllegalStateException
-	 *             if the application descriptor is unregistered
-	 */
-	public final Map getProperties(String locale) {
-		Map props = getPropertiesSpecific( locale );
-		Boolean containerLocked = (Boolean) props.remove( APPLICATION_LOCKED );
-		synchronized (locked) {
-			if (containerLocked != null && containerLocked.booleanValue() != locked[0]) {
-				if (locked[0])
-					lockSpecific();
-				else
-					unlockSpecific();
-			}
-		}
-		props.put( APPLICATION_LOCKED, new Boolean( locked[0] ) );
-		return props;
-	}
-	
-	/**
-	 * Container implementations can provide application model specific
-	 * and/or container implementation specific properties via this 
-	 * method. 
-	 * 
-	 * Localizable properties must be returned localized if the provided
-	 * <code>locale</code> argument is not the empty String. The value
-	 * <code>null</code> indicates to use the default locale, for other
-	 * values the specified locale should be used.
-	 *  
-	 * The returned {@link java.util.Map} must contain the standard OSGi service 
-	 * properties as well
-	 * (e.g. service.id, service.vendor etc.) and specialized application
-	 * descriptors may offer further service properties. 
-	 * The returned <code>Map</code>
-	 * contains a snapshot of the properties. It will not reflect further changes in the
-	 * property values nor will the update of the Map change the corresponding
-	 * service property.
-
-	 * @param locale the locale to be used for localizing the properties.
-	 * If <code>null</code> the default locale should be used. If it is
-	 * the empty String (<code>""</code>) then raw (non-localized) values
-	 * should be returned.
-	 * 
-	 * @return the application model specific and/or container implementation
-	 * specific properties of this application descriptor.
-	 *  
-	 * @throws IllegalStateException
-	 *             if the application descriptor is unregistered
-	 */
-	protected abstract Map getPropertiesSpecific(String locale);
-
-	/**
-	 * Launches a new instance of an application. The <code>args</code> parameter specifies
-	 * the startup parameters for the instance to be launched, it may be null.
-	 * <p>
-	 * The following steps are made:
-	 * <UL>
-	 * <LI>Check for the appropriate permission.
-	 * <LI>Check the locking state of the application. If locked then return
-	 * null otherwise continue.
-	 * <LI>Calls the <code>launchSpecific()</code> method to create and start an application
-	 * instance.
-	 * <LI>Returns the <code>ApplicationHandle</code> returned by the 
-	 * launchSpecific()
-	 * </UL>
-	 * The caller has to have ApplicationAdminPermission(applicationPID,
-	 * "launch") in order to be able to perform this operation.
-	 * <P>
-	 * The <code>Map</code> argument of the launch method contains startup 
-	 * arguments for the
-	 * application. The keys used in the Map must be non-null, non-empty <code>String<code>
-	 * objects. They can be standard or application
-	 * specific. OSGi defines the <code>org.osgi.triggeringevent</code>
-	 * key to be used to
-	 * pass the triggering event to a scheduled application, however
-	 * in the future it is possible that other well-known keys will be defined.
-	 * To avoid unwanted clashes of keys, the following rules should be applied:
-	 * <ul>
-	 *   <li>The keys starting with the dash (-) character are application
-	 *       specific, no well-known meaning should be associated with them.</li>
-	 *   <li>Well-known keys should follow the reverse domain name based naming.
-	 *       In particular, the keys standardized in OSGi should start with
-	 *       <code>org.osgi.</code>.</li>
-	 * </ul>
-	 * <P>
-	 * The method is synchonous, it return only when the application instance was
-	 * successfully started or the attempt to start it failed.
-	 * <P>
-	 * This method never returns <code>null</code>. If launching an application fails,
-	 * the appropriate exception is thrown.
-	 * 
-	 * @param arguments
-	 *            Arguments for the newly launched application, may be null
-	 * 
-	 * @return the registered ApplicationHandle, which represents the newly 
-	 *         launched application instance. Never returns <code>null</code>.
-	 * 
-	 * @throws SecurityException
-	 *             if the caller doesn't have "lifecycle"
-	 *             ApplicationAdminPermission for the application.
-	 * @throws ApplicationException
-	 *             if starting the application failed
-	 * @throws IllegalStateException
-	 *             if the application descriptor is unregistered
-	 * @throws IllegalArgumentException 
-	 *             if the specified <code>Map</code> contains invalid keys
-	 *             (null objects, empty <code>String</code> or a key that is not
-	 *              <code>String</code>)
-	 */
-	public final ApplicationHandle launch(Map arguments)
-			throws ApplicationException {
-		SecurityManager sm = System.getSecurityManager();
-		if (sm!= null)
-			sm.checkPermission(new ApplicationAdminPermission(this, ApplicationAdminPermission.LIFECYCLE_ACTION));
-		synchronized (locked) {
-			if (locked[0])
-				throw new ApplicationException(ApplicationException.APPLICATION_LOCKED, "Application is locked, can't launch!");
-		}
-		if( !isLaunchableSpecific() )
-			throw new ApplicationException(ApplicationException.APPLICATION_NOT_LAUNCHABLE,
-					 "Cannot launch the application!");
-		checkArgs(arguments);
-		try {
-			return launchSpecific(arguments);
-		} catch(IllegalStateException ise) {
-			throw ise;
-		} catch(SecurityException se) {
-			throw se;
-		} catch( ApplicationException ae) {
-			throw ae;
-		} catch(Exception t) {
-			throw new ApplicationException(ApplicationException.APPLICATION_INTERNAL_ERROR, t);
-		}
-	}
-
-	/**
-	 * Called by launch() to create and start a new instance in an application
-	 * model specific way. It also creates and registeres the application handle
-	 * to represent the newly created and started instance and registeres it.
-	 * The method is synchonous, it return only when the application instance was
-	 * successfully started or the attempt to start it failed.
-	 * <P>
-	 * This method must not return <code>null</code>. If launching the application
-	 * failed, and exception must be thrown.
-	 * 
-	 * @param arguments
-	 *            the startup parameters of the new application instance, may be
-	 *            null
-	 * 
-	 * @return the registered application model
-	 *         specific application handle for the newly created and started
-	 *         instance.
-	 * 
-	 * @throws IllegalStateException
-	 *             if the application descriptor is unregistered
-	 * @throws Exception
-	 *             if any problem occures.
-	 */
-	protected abstract ApplicationHandle launchSpecific(Map arguments)
-			throws Exception;
-	
-	/**
-	 * This method is called by launch() to verify that according to the
-	 * container, the application is launchable.
-	 * 
-	 * @return true, if the application is launchable according to the 
-	 *  container, false otherwise.
-	 *  
-	 * @throws IllegalStateException
-	 *             if the application descriptor is unregistered
-	 */
-	protected abstract boolean isLaunchableSpecific();
-
-	/**
-	 * Schedules the application at a specified event. Schedule information
-	 * should not get lost even if the framework or the device restarts so it
-	 * should be stored in a persistent storage. The method registers a
-	 * {@link ScheduledApplication} service in Service Registry, representing
-	 * the created scheduling.
-	 * <p>
-	 * The <code>Map</code> argument of the  method contains startup 
-	 * arguments for the application. The keys used in the Map must be non-null, 
-	 * non-empty <code>String<code> objects.
-	 * 
-	 * @param arguments
-	 *            the startup arguments for the scheduled application, may be
-	 *            null
-	 * @param topic
-	 *            specifies the topic of the triggering event, it may contain a
-	 *            trailing asterisk as wildcard, the empty string is treated as
-	 *            "*", must not be null
-	 * @param eventFilter
-	 *            specifies and LDAP filter to filter on the properties of the
-	 *            triggering event, may be null
-	 * @param recurring
-	 *            if the recurring parameter is false then the application will
-	 *            be launched only once, when the event firstly occurs. If the
-	 *            parameter is true then scheduling will take place for every
-	 *            event occurrence; i.e. it is a recurring schedule
-	 * 
-	 * @return the registered scheduled application service
-	 * 
-	 * @throws NullPointerException
-	 *             if the topic is <code>null</code>
-	 * @throws InvalidSyntaxException 
-	 * 			   if the specified <code>eventFilter</code> is not syntactically correct
-	 * @throws SecurityException
-	 *             if the caller doesn't have "schedule"
-	 *             ApplicationAdminPermission for the application.
-	 * @throws IllegalStateException
-	 *             if the application descriptor is unregistered
-	 * @throws IllegalArgumentException
-	 *             if the specified <code>Map</code> contains invalid keys
-	 *             (null objects, empty <code>String</code> or a key that is not
-	 *              <code>String</code>)
-	 */
-	public final ScheduledApplication schedule(Map arguments, String topic,
-			String eventFilter, boolean recurring) throws InvalidSyntaxException {
-		checkArgs(arguments);
-		isLaunchableSpecific(); // checks if the ApplicationDescriptor was already unregistered
-		return AppPersistenceUtil.addScheduledApp(this, arguments, topic, eventFilter, recurring);
-	}
-
-	/**
-	 * Sets the lock state of the application. If an application is locked then
-	 * launching a new instance is not possible. It does not affect the already
-	 * launched instances.
-	 * 
-	 * @throws SecurityException
-	 *             if the caller doesn't have "lock" ApplicationAdminPermission
-	 *             for the application.
-	 * @throws IllegalStateException
-	 *             if the application descriptor is unregistered
-	 */
-	public final void lock() {
-		SecurityManager sm = System.getSecurityManager();
-		if (sm != null)
-			sm.checkPermission(new ApplicationAdminPermission(this, ApplicationAdminPermission.LOCK_ACTION));
-		synchronized (locked) {
-			if (locked[0])
-				return;
-			locked[0] = true;
-			lockSpecific();
-			saveLock(true);
-		}
-	}
-	
-	/**
-	 * This method is used to notify the container implementation that the
-	 * corresponding application has been locked and it should update the
-	 * <code>application.locked</code> service property accordingly.
-     * @throws IllegalStateException
-     *             if the application descriptor is unregistered
-	 */
-	protected abstract void lockSpecific();
-
-	/**
-	 * Unsets the lock state of the application.
-	 * 
-	 * @throws SecurityException
-	 *             if the caller doesn't have "lock" ApplicationAdminPermission
-	 *             for the application.
-	 * @throws IllegalStateException
-	 *             if the application descriptor is unregistered
-	 */
-	public final void unlock() {
-		SecurityManager sm = System.getSecurityManager();
-		if (sm != null)
-			sm.checkPermission(new ApplicationAdminPermission(this, ApplicationAdminPermission.LOCK_ACTION));
-		synchronized (locked) {
-			if (!locked[0])
-				return;
-			locked[0] = false;
-			unlockSpecific();
-			saveLock(false);
-		}
-	}
-	
-	/**
-	 * This method is used to notify the container implementation that the
-	 * corresponding application has been unlocked and it should update the
-	 * <code>application.locked</code> service property accordingly.
-
-	 * @throws IllegalStateException
-	 *             if the application descriptor is unregistered
-	 */
-	protected abstract void unlockSpecific();
-
-		/**
-		 * @skip
-		 */
-	public interface Delegate {
-		void setApplicationDescriptor(ApplicationDescriptor d, String pid );
-
-		boolean isLocked();
-
-		void lock();
-
-		void unlock();
-
-		ScheduledApplication schedule(Map args, String topic, String filter,
-				boolean recurs) throws InvalidSyntaxException;
-
-		void launch(Map arguments) throws ApplicationException;
-	}
-
-	private void saveLock(boolean locked) {
-		AppPersistenceUtil.saveLock(this, locked);
-	}
-
-	private boolean isLocked() {
-		return AppPersistenceUtil.isLocked(this);
-	}
-
-	private void checkArgs(Map arguments) {
-		if (arguments == null)
-			return;
-		for (Iterator keys = arguments.keySet().iterator(); keys.hasNext();) {
-			Object key = keys.next();
-			if (!(key instanceof String))
-				throw new IllegalArgumentException("Invalid key type: " + key == null ? "<null>" : key.getClass().getName());
-			if ("".equals(key))
-				throw new IllegalArgumentException("Empty string is an invalid key");
-		}
-	}
-
-	String							pid;
-	private boolean[]				locked = {false};
-}
diff --git a/bundles/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationException.java b/bundles/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationException.java
deleted file mode 100755
index d79f861..0000000
--- a/bundles/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationException.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package org.osgi.service.application;
-
-/**
- * This exception is used to indicate problems related to application 
- * lifecycle management.
- * 
- * <code>ApplicationException</code> object is created by the Application Admin to denote
- * an exception condition in the lifecycle of an application.
- * <code>ApplicationException</code>s should not be created by developers.
- * <br/>
- * <code>ApplicationException</code>s are associated with an error code. This code
- * describes the type of problem reported in this exception. The possible codes are:
- * <ul>
- * <li> {@link #APPLICATION_LOCKED} - The application couldn't be launched because it is locked.</li>
- * <li> {@link #APPLICAITON_NOT_LAUNCHABLE} - The application is not in launchable state.</li>
- * <li> {@link #APPLICATION_INTERNAL_ERROR} - An exception was thrown by the application or its
- *       container during launch.</li>
- * </ul>
- * 
- */
-public class ApplicationException extends Exception {
-	private static final long serialVersionUID = -7173190453622508207L;
-	private final Throwable cause;
-	private final int errorCode;
-	
-	/**
-	 * The application couldn't be launched because it is locked.
-	 */
-	public static final int APPLICATION_LOCKED	= 0x01;
-	
-	/**
-	 * The application is not in launchable state, it's 
-	 * {@link ApplicationDescriptor#APPLICATION_LAUNCHABLE}
-	 * attribute is false.
-	 */
-	public static final int APPLICATION_NOT_LAUNCHABLE = 0x02;
-	
-	/**
-	 * An exception was thrown by the application or the corresponding
-	 * container during launch. The exception is available in {@link #getCause()}.
-	 */
-	public static final int APPLICATION_INTERNAL_ERROR = 0x03;
-
-	/**
-	 * Creates an <code>ApplicationException</code> with the specified error code.
-	 * @param errorCode The code of the error 
-	 */
-	public ApplicationException(int errorCode) {
-		this(errorCode,(Throwable) null);
-	}
-	
-	/**
-	 * Creates a <code>ApplicationException</code> that wraps another exception.
-	 * 
-	 * @param errorCode The code of the error 
-	 * @param cause The cause of this exception.
-	 */
-	public ApplicationException(int errorCode, Throwable cause) {
-		super();
-		this.cause = cause;
-		this.errorCode = errorCode;
-	}
-
-	/**
-	 * Creates an <code>ApplicationException</code> with the specified error code.
-	 * @param errorCode The code of the error 
-	 * @param message The associated message
-	 */
-	public ApplicationException(int errorCode, String message) {
-		this(errorCode, message,null);
-	}
-
-	/**
-	 * Creates a <code>ApplicationException</code> that wraps another exception.
-	 * 
-	 * @param errorCode The code of the error 
-	 * @param message The associated message.
-	 * @param cause The cause of this exception.
-	 */
-	public ApplicationException(int errorCode, String message, Throwable cause) {
-		super(message);
-		this.cause = cause;
-		this.errorCode = errorCode;
-	}
-
-	/**
-	 * Returns the cause of this exception or <code>null</code> if no cause
-	 * was specified when this exception was created.
-	 * 
-	 * @return The cause of this exception or <code>null</code> if no cause
-	 *         was specified.
-	 */
-	public Throwable getCause() {
-		return cause;
-	}
-
-	/**
-	 * Returns the error code associcated with this exception.
-	 * @return The error code of this exception.
-	 */
-	public int getErrorCode() {
-		return errorCode;
-	}
-}
diff --git a/bundles/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationHandle.java b/bundles/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationHandle.java
deleted file mode 100755
index 502a2e6..0000000
--- a/bundles/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationHandle.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * $Header: /cvsroot/eclipse/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationHandle.java,v 1.1 2005/12/14 22:17:04 twatson Exp $
- * 
- * Copyright (c) OSGi Alliance (2004, 2005). All Rights Reserved.
- * 
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this 
- * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html.
- */
-
-package org.osgi.service.application;
-
-import org.osgi.framework.Constants;
-
-/**
- * ApplicationHandle is an OSGi service interface which represents an instance
- * of an application. It provides the functionality to query and manipulate the
- * lifecycle state of the represented application instance. It defines constants
- * for the lifecycle states.
- */
-public abstract class ApplicationHandle {
-
-	/**
-	 * The property key for the unique identifier (PID) of the application
-	 * instance.
-	 */
-	public static final String APPLICATION_PID = Constants.SERVICE_PID;
-	
-	/**
-	 * The property key for the pid of the corresponding application descriptor.
-	 */
-	public final static String APPLICATION_DESCRIPTOR	= "application.descriptor";
-	
-	/**
-	 * The property key for the state of this appliction instance.
-	 */
-	public final static String APPLICATION_STATE		= "application.state";
-
-	/**
-	 * The application instance is running. This is the initial state of a newly
-	 * created application instance.
-	 */
-	public final static String RUNNING = "RUNNING";
-	
-  /**
-   * The application instance is being stopped. This is the state of the
-   * application instance during the execution of the <code>destroy()</code>
-   * method.
-   */
-	public final static String STOPPING = "STOPPING";
-
-	private final String instanceId;
-	
-	/**
-	 * Application instance identifier is specified by the container when the
-	 * instance is created. The instance identifier must remain static for the 
-	 * lifetime of the instance, it must remain the same even across framework
-	 * restarts for the same application instance. This value must be the same
-	 * as the <code>service.pid</code> service property of this application
-	 * handle.
-	 * <p>
-	 * The instance identifier should follow the following scheme: 
-	 * &lt;<i>application descriptor PID</i>&gt;.&lt;<i>index</i>&gt;
-	 * where &lt;<i>application descriptor PID</i>&gt; is the PID of the 
-	 * corresponding <code>ApplicationDescriptor</code> and &lt;<i>index</i>&gt;
-	 * is a unique integer index assigned by the application container. 
-	 * Even after destroying the application index the same index value should not
-	 * be reused in a reasonably long timeframe.
-	 * 
-	 * @param instanceId the instance identifier of the represented application
-	 * instance. It must not be null.
-	 * 
-	 * @param descriptor the <code>ApplicationDescriptor</code> of the represented
-	 * application instance. It must not be null.
-	 * 
-	 * @throws NullPointerException if any of the arguments is null.
-	 */
-	protected ApplicationHandle(String instanceId, ApplicationDescriptor descriptor ) {
-		if( (null == instanceId) || (null == descriptor) ) {
-			throw new NullPointerException("Parameters must not be null!");
-		}
-		
-		this.instanceId	= instanceId;
-		this.descriptor = descriptor;
-	}
-
-	/**
-	 * Retrieves the <code>ApplicationDescriptor</code> to which this 
-	 * <code>ApplicationHandle</code> belongs. 
-	 * 
-	 * @return The corresponding <code>ApplicationDescriptor</code>
-	 */
-	public final ApplicationDescriptor getApplicationDescriptor() {
-		return descriptor;
-	}
-
-	/**
-	 * Get the state of the application instance.
-	 * 
-	 * @return the state of the application.
-	 * 
-	 * @throws IllegalStateException
-	 *             if the application handle is unregistered
-	 */
-	public abstract String getState();
-
-	/**
-	 * Returns the unique identifier of this instance. This value is also
-	 * available as a service property of this application handle's service.pid.
-	 * 
-	 * @return the unique identifier of the instance
-	 */
-	public final String getInstanceId() {
-		return instanceId;
-	}
-
-	/**
-	 * The application instance's lifecycle state can be influenced by this
-	 * method. It lets the application instance perform operations to stop
-	 * the application safely, e.g. saving its state to a permanent storage.
-	 * <p>
-	 * The method must check if the lifecycle transition is valid; a STOPPING
-	 * application cannot be stopped. If it is invalid then the method must
-	 * exit. Otherwise the lifecycle state of the application instance must be
-	 * set to STOPPING. Then the destroySpecific() method must be called to
-	 * perform any application model specific steps for safe stopping of the
-	 * represented application instance.
-	 * <p>
-	 * At the end the <code>ApplicationHandle</code> must be unregistered. 
-	 * This method should  free all the resources related to this 
-	 * <code>ApplicationHandle</code>.
-	 * <p>
-	 * When this method is completed the application instance has already made
-	 * its operations for safe stopping, the ApplicationHandle has been
-	 * unregistered and its related resources has been freed. Further calls on
-	 * this application should not be made because they may have unexpected
-	 * results.
-	 * 
-	 * @throws SecurityException
-	 *             if the caller doesn't have "lifecycle"
-	 *             <code>ApplicationAdminPermission</code> for the corresponding application.
-	 * 
-	 * @throws IllegalStateException
-	 *             if the application handle is unregistered
-	 */
-	public final void destroy() {
-		if (STOPPING.equals(getState()))
-			return;
-		SecurityManager sm = System.getSecurityManager();
-		if (sm != null)
-			sm.checkPermission(new ApplicationAdminPermission(getApplicationDescriptor(), ApplicationAdminPermission.LIFECYCLE_ACTION));
-		destroySpecific();
-	}
-
-	/**
-	 * Called by the destroy() method to perform application model specific
-	 * steps to stop and destroy an application instance safely.
-	 * 
-	 * @throws IllegalStateException
-	 *             if the application handle is unregistered
-	 */
-	protected abstract void destroySpecific();
-	
-	ApplicationDescriptor		descriptor;
-
-	/**
-	 * @skip
-	 *
-	 */
-	public interface Delegate {
-		void setApplicationHandle(ApplicationHandle d, ApplicationDescriptor.Delegate descriptor );
-		void destroy();
-	}
-}
diff --git a/bundles/org.eclipse.equinox.app/src/org/osgi/service/application/ScheduledApplication.java b/bundles/org.eclipse.equinox.app/src/org/osgi/service/application/ScheduledApplication.java
deleted file mode 100755
index d08d47a..0000000
--- a/bundles/org.eclipse.equinox.app/src/org/osgi/service/application/ScheduledApplication.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.service.application/src/org/osgi/service/application/ScheduledApplication.java,v 1.13 2005/08/29 09:24:34 ckarai Exp $
- * 
- * Copyright (c) OSGi Alliance (2004, 2005). All Rights Reserved.
- * 
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this 
- * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html.
- */
-
-package org.osgi.service.application;
-
-import java.util.Map;
-
-/**
- * It is allowed to schedule an application based on a specific event.
- * ScheduledApplication service keeps the scheduling information. When the
- * specified event is fired a new instance must be launched. Note that launching
- * operation may fail because e.g. the application is locked.
- */
-public interface ScheduledApplication {
-
-	/**
-	 * Queries the topic of the triggering event. The topic may contain a
-	 * trailing asterisk as wildcard.
-	 * 
-	 * @return the topic of the triggering event
-	 * 
-	 * @throws IllegalStateException
-	 *             if the scheduled application service is unregistered
-	 */
-	public String getTopic();
-
-	/**
-	 * Queries the event filter for the triggering event.
-	 * 
-	 * @return the event filter for triggering event
-	 * 
-	 * @throws IllegalStateException
-	 *             if the scheduled application service is unregistered
-	 */
-	public String getEventFilter();
-
-	/**
-	 * Queries if the scheduling is recurring.
-	 * 
-	 * @return true if the scheduling is recurring, otherwise returns false
-	 * 
-	 * @throws IllegalStateException
-	 *             if the scheduled application service is unregistered
-	 */
-	public boolean isRecurring();
-
-	/**
-	 * Retrieves the ApplicationDescriptor which represents the application and
-	 * necessary for launching.
-	 * 
-	 * @return the application descriptor that
-	 *         represents the scheduled application
-	 * 
-	 * @throws IllegalStateException
-	 *             if the scheduled application service is unregistered
-	 */
-	public ApplicationDescriptor getApplicationDescriptor();
-
-	/**
-	 * Queries the startup arguments specified when the application was
-	 * scheduled. The method returns a copy of the arguments, it is not possible
-	 * to modify the arguments after scheduling.
-	 * 
-	 * @return the startup arguments of the scheduled application. It may be
-	 *         null if null argument was specified.
-	 * 
-	 * @throws IllegalStateException
-	 *             if the scheduled application service is unregistered
-	 */
-	public Map getArguments();
-
-	/**
-	 * Cancels this schedule of the application.
-	 * 
-	 * @throws SecurityException
-	 *             if the caller doesn't have "schedule"
-	 *             ApplicationAdminPermission for the scheduled application.
-	 * @throws IllegalStateException
-	 *             if the scheduled application service is unregistered
-	 */
-	public void remove();
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.common/.classpath b/bundles/org.eclipse.equinox.common/.classpath
deleted file mode 100644
index 751c8f2..0000000
--- a/bundles/org.eclipse.equinox.common/.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.equinox.common/.cvsignore b/bundles/org.eclipse.equinox.common/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/bundles/org.eclipse.equinox.common/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/bundles/org.eclipse.equinox.common/.project b/bundles/org.eclipse.equinox.common/.project
deleted file mode 100644
index 2289dee..0000000
--- a/bundles/org.eclipse.equinox.common/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.equinox.common</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.equinox.common/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.common/META-INF/MANIFEST.MF
deleted file mode 100644
index 36368a7..0000000
--- a/bundles/org.eclipse.equinox.common/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,18 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.equinox.common; singleton:=true
-Bundle-Version: 1.0.0.qualifier
-Bundle-Localization: plugin
-Export-Package: org.eclipse.core.internal.runtime;x-friends:="org.eclipse.core.contenttype,org.eclipse.core.jobs,org.eclipse.equinox.preferences,org.eclipse.equinox.registry,org.eclipse.core.runtime,org.eclipse.core.runtime.compatibility",
- org.eclipse.core.runtime
-Bundle-Vendor: %providerName
-Bundle-Activator: org.eclipse.core.internal.runtime.Activator
-Import-Package: org.eclipse.osgi.framework.log,
- org.eclipse.osgi.service.datalocation,
- org.eclipse.osgi.service.localization,
- org.eclipse.osgi.service.urlconversion,
- org.eclipse.osgi.util,
- org.osgi.framework,
- org.osgi.service.packageadmin,
- org.osgi.util.tracker
diff --git a/bundles/org.eclipse.equinox.common/about.html b/bundles/org.eclipse.equinox.common/about.html
deleted file mode 100644
index cdc1e50..0000000
--- a/bundles/org.eclipse.equinox.common/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.equinox.common/build.properties b/bundles/org.eclipse.equinox.common/build.properties
deleted file mode 100644
index c1e8ad7..0000000
--- a/bundles/org.eclipse.equinox.common/build.properties
+++ /dev/null
@@ -1,17 +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,\
-               about.html
-src.includes = about.html
diff --git a/bundles/org.eclipse.equinox.common/plugin.properties b/bundles/org.eclipse.equinox.common/plugin.properties
deleted file mode 100644
index 9badd2f..0000000
--- a/bundles/org.eclipse.equinox.common/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 = Common Eclipse Runtime
-providerName = Eclipse.org
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/Activator.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/Activator.java
deleted file mode 100644
index 95908bd..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/Activator.java
+++ /dev/null
@@ -1,98 +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.runtime;
-
-import java.net.URL;
-import java.util.*;
-import org.eclipse.osgi.service.urlconversion.URLConverter;
-import org.osgi.framework.*;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * The Common runtime plugin class.
- * 
- * This class can only be used if OSGi plugin is available.
- */
-public class Activator implements BundleActivator {
-
-	/**
-	 * Table to keep track of all the URL converter services.
-	 */
-	private static Map urlTrackers = new HashMap();
-
-	/**
-	 * The bundle context associated this plug-in
-	 */
-	private static BundleContext bundleContext;
-
-	/**
-	 * This method is called upon plug-in activation
-	 */
-	public void start(BundleContext context) throws Exception {
-		bundleContext = context;
-	}
-
-	/**
-	 * This method is called when the plug-in is stopped
-	 */
-	public void stop(BundleContext context) throws Exception {
-		CommonOSGiUtils.getDefault().closeServices();
-		closeURLTrackerServices();
-		bundleContext = null;
-	}
-
-	static BundleContext getContext() {
-		return bundleContext;
-	}
-
-	/*
-	 * Let go of all the services that we aquired and kept track of.
-	 */
-	private static void closeURLTrackerServices() {
-		synchronized (urlTrackers) {
-			if (!urlTrackers.isEmpty()) {
-				for (Iterator iter = urlTrackers.keySet().iterator(); iter.hasNext();) {
-					String key = (String) iter.next();
-					ServiceTracker tracker = (ServiceTracker) urlTrackers.get(key);
-					tracker.close();
-				}
-				urlTrackers = new HashMap();
-			}
-		}
-	}
-
-	/*
-	 * Return the URL Converter for the given URL. Return null if we can't
-	 * find one.
-	 */
-	public static URLConverter getURLConverter(URL url) {
-		String protocol = url.getProtocol();
-		synchronized (urlTrackers) {
-			ServiceTracker tracker = (ServiceTracker) urlTrackers.get(protocol);
-			if (tracker == null) {
-				// get the right service based on the protocol
-				String FILTER_PREFIX = "(&(objectClass=" + URLConverter.class.getName() + ")(protocol="; //$NON-NLS-1$ //$NON-NLS-2$
-				String FILTER_POSTFIX = "))"; //$NON-NLS-1$
-				Filter filter = null;
-				try {
-					filter = getContext().createFilter(FILTER_PREFIX + protocol + FILTER_POSTFIX);
-				} catch (InvalidSyntaxException e) {
-					return null;
-				}
-				tracker = new ServiceTracker(getContext(), filter, null);
-				tracker.open();
-				// cache it in the registry
-				urlTrackers.put(protocol, tracker);
-			}
-			return (URLConverter) tracker.getService();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/AdapterManager.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/AdapterManager.java
deleted file mode 100644
index 55e9a02..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/AdapterManager.java
+++ /dev/null
@@ -1,353 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import java.util.*;
-import org.eclipse.core.runtime.IAdapterFactory;
-import org.eclipse.core.runtime.IAdapterManager;
-
-/**
- * This class is the standard implementation of <code>IAdapterManager</code>. It provides
- * fast lookup of property values with the following semantics:
- * <ul>
- * <li>At most one factory will be invoked per property lookup
- * <li>If multiple installed factories provide the same adapter, only the first found in
- * the search order will be invoked.
- * <li>The search order from a class with the definition <br>
- * <code>class X extends Y implements A, B</code><br> is as follows: <il>
- * <li>the target's class: X
- * <li>X's superclasses in order to <code>Object</code>
- * <li>a breadth-first traversal of the target class's interfaces in the order returned by
- * <code>getInterfaces</code> (in the example, A and its superinterfaces then B and its
- * superinterfaces) </il>
- * </ul>
- * 
- * @see IAdapterFactory
- * @see IAdapterManager
- */
-public final class AdapterManager implements IAdapterManager {
-	/** 
-	 * Cache of adapters for a given adaptable class. Maps String  -> Map
-	 * (adaptable class name -> (adapter class name -> factory instance))
-	 */
-	protected HashMap adapterLookup;
-	/**
-	 * Cache of classes for a given type name. Avoids too many loadClass calls.
-	 * (factory -> (type name -> clazz))
-	 */
-	protected HashMap classLookup;
-	/**
-	 * Cache of class lookup order. This avoids having to compute often, and
-	 * provides clients with quick lookup for instanceOf checks based on type name.
-	 */
-	protected HashMap classSearchOrderLookup;
-	/**
-	 * Map of factories, keyed by <code>String</code>, fully qualified class name of
-	 * the adaptable class that the factory provides adapters for. Value is a <code>List</code>
-	 * of <code>IAdapterFactory</code>.
-	 */
-	protected final HashMap factories;
-
-	private static final AdapterManager singleton = new AdapterManager();
-
-	public static AdapterManager getDefault() {
-		return singleton;
-	}
-
-	/**
-	 * Private constructor to block instance creation.
-	 */
-	private AdapterManager() {
-		factories = new HashMap(5);
-		adapterLookup = null;
-	}
-
-	/**
-	 * Given a type name, add all of the factories that respond to those types into
-	 * the given table. Each entry will be keyed by the adapter class name (supplied in
-	 * IAdapterFactory.getAdapterList).
-	 */
-	private void addFactoriesFor(String typeName, Map table) {
-		List factoryList = (List) factories.get(typeName);
-		if (factoryList == null)
-			return;
-		for (int i = 0, imax = factoryList.size(); i < imax; i++) {
-			IAdapterFactory factory = (IAdapterFactory) factoryList.get(i);
-			if (factory instanceof IAdapterFactoryExt) {
-				String[] adapters = ((IAdapterFactoryExt) factory).getAdapterNames();
-				for (int j = 0; j < adapters.length; j++) {
-					if (table.get(adapters[j]) == null)
-						table.put(adapters[j], factory);
-				}
-			} else {
-				Class[] adapters = factory.getAdapterList();
-				for (int j = 0; j < adapters.length; j++) {
-					String adapterName = adapters[j].getName();
-					if (table.get(adapterName) == null)
-						table.put(adapterName, factory);
-				}
-			}
-		}
-	}
-
-	private void cacheClassLookup(IAdapterFactory factory, Class clazz) {
-		//cache reference to lookup to protect against concurrent flush
-		HashMap lookup = classLookup;
-		if (lookup == null)
-			classLookup = lookup = new HashMap(4);
-		HashMap classes = (HashMap) lookup.get(factory);
-		if (classes == null) {
-			classes = new HashMap(4);
-			lookup.put(factory, classes);
-		}
-		classes.put(clazz.getName(), clazz);
-	}
-
-	private Class cachedClassForName(IAdapterFactory factory, String typeName) {
-		Class clazz = null;
-		//cache reference to lookup to protect against concurrent flush
-		HashMap lookup = classLookup;
-		if (lookup != null) {
-			HashMap classes = (HashMap) lookup.get(factory);
-			if (classes != null) {
-				clazz = (Class) classes.get(typeName);
-			}
-		}
-		return clazz;
-	}
-
-	/**
-	 * Returns the class with the given fully qualified name, or null
-	 * if that class does not exist or belongs to a plug-in that has not
-	 * yet been loaded.
-	 */
-	private Class classForName(IAdapterFactory factory, String typeName) {
-		Class clazz = cachedClassForName(factory, typeName);
-		if (clazz == null) {
-			try {
-				if (factory instanceof IAdapterFactoryExt)
-					factory = ((IAdapterFactoryExt) factory).loadFactory(false);
-				if (factory != null) {
-					clazz = factory.getClass().getClassLoader().loadClass(typeName);
-					cacheClassLookup(factory, clazz);
-				}
-			} catch (ClassNotFoundException e) {
-				// class not yet loaded
-			}
-		}
-		return clazz;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.IAdapterManager#getAdapterTypes(java.lang.Class)
-	 */
-	public String[] computeAdapterTypes(Class adaptable) {
-		Set types = getFactories(adaptable).keySet();
-		return (String[]) types.toArray(new String[types.size()]);
-	}
-
-	/**
-	 * Computes the adapters that the provided class can adapt to, along
-	 * with the factory object that can perform that transformation. Returns 
-	 * a table of adapter class name to factory object.
-	 * @param adaptable
-	 */
-	private Map getFactories(Class adaptable) {
-		//cache reference to lookup to protect against concurrent flush
-		HashMap lookup = adapterLookup;
-		if (lookup == null)
-			adapterLookup = lookup = new HashMap(30);
-		Map table = (Map) lookup.get(adaptable.getName());
-		if (table == null) {
-			// calculate adapters for the class
-			table = new HashMap(4);
-			Class[] classes = computeClassOrder(adaptable);
-			for (int i = 0; i < classes.length; i++)
-				addFactoriesFor(classes[i].getName(), table);
-			// cache the table
-			lookup.put(adaptable.getName(), table);
-		}
-		return table;
-	}
-
-	public Class[] computeClassOrder(Class adaptable) {
-		List classes = null;
-		//cache reference to lookup to protect against concurrent flush
-		HashMap lookup = classSearchOrderLookup;
-		if (lookup != null)
-			classes = (List) lookup.get(adaptable);
-		// compute class order only if it hasn't been cached before
-		if (classes == null) {
-			classes = new ArrayList();
-			computeClassOrder(adaptable, classes);
-			if (lookup == null)
-				classSearchOrderLookup = lookup = new HashMap();
-			lookup.put(adaptable, classes);
-		}
-		return (Class[]) classes.toArray(new Class[classes.size()]);
-	}
-
-	/**
-	 * Builds and returns a table of adapters for the given adaptable type.
-	 * The table is keyed by adapter class name. The
-	 * value is the <b>sole<b> factory that defines that adapter. Note that
-	 * if multiple adapters technically define the same property, only the
-	 * first found in the search order is considered.
-	 * 
-	 * Note that it is important to maintain a consistent class and interface
-	 * lookup order. See the class comment for more details.
-	 */
-	private void computeClassOrder(Class adaptable, Collection classes) {
-		Class clazz = adaptable;
-		Set seen = new HashSet(4);
-		while (clazz != null) {
-			classes.add(clazz);
-			computeInterfaceOrder(clazz.getInterfaces(), classes, seen);
-			clazz = clazz.getSuperclass();
-		}
-	}
-
-	private void computeInterfaceOrder(Class[] interfaces, Collection classes, Set seen) {
-		List newInterfaces = new ArrayList(interfaces.length);
-		for (int i = 0; i < interfaces.length; i++) {
-			Class interfac = interfaces[i];
-			if (seen.add(interfac)) {
-				//note we cannot recurse here without changing the resulting interface order
-				classes.add(interfac);
-				newInterfaces.add(interfac);
-			}
-		}
-		for (Iterator it = newInterfaces.iterator(); it.hasNext();)
-			computeInterfaceOrder(((Class) it.next()).getInterfaces(), classes, seen);
-	}
-
-	/**
-	 * Flushes the cache of adapter search paths. This is generally required whenever an
-	 * adapter is added or removed.
-	 * <p>
-	 * It is likely easier to just toss the whole cache rather than trying to be smart
-	 * and remove only those entries affected.
-	 * </p>
-	 */
-	public synchronized void flushLookup() {
-		adapterLookup = null;
-		classLookup = null;
-		classSearchOrderLookup = null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.IAdapterManager#getAdapter(java.lang.Object, java.lang.Class)
-	 */
-	public Object getAdapter(Object adaptable, Class adapterType) {
-		IAdapterFactory factory = (IAdapterFactory) getFactories(adaptable.getClass()).get(adapterType.getName());
-		Object result = null;
-		if (factory != null)
-			result = factory.getAdapter(adaptable, adapterType);
-		if (result == null && adapterType.isInstance(adaptable))
-			return adaptable;
-		return result;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.IAdapterManager#getAdapter(java.lang.Object, java.lang.Class)
-	 */
-	public Object getAdapter(Object adaptable, String adapterType) {
-		return getAdapter(adaptable, adapterType, false);
-	}
-
-	/**
-	 * Returns an adapter of the given type for the provided adapter.
-	 * @param adaptable the object to adapt
-	 * @param adapterType the type to adapt the object to
-	 * @param force <code>true</code> if the plug-in providing the
-	 * factory should be activated if necessary. <code>false</code>
-	 * if no plugin activations are desired.
-	 */
-	private Object getAdapter(Object adaptable, String adapterType, boolean force) {
-		IAdapterFactory factory = (IAdapterFactory) getFactories(adaptable.getClass()).get(adapterType);
-		if (force && factory instanceof IAdapterFactoryExt)
-			factory = ((IAdapterFactoryExt) factory).loadFactory(true);
-		Object result = null;
-		if (factory != null) {
-			Class clazz = classForName(factory, adapterType);
-			if (clazz != null)
-				result = factory.getAdapter(adaptable, clazz);
-		}
-		if (result == null && adaptable.getClass().getName().equals(adapterType))
-			return adaptable;
-		return result;
-	}
-
-	public boolean hasAdapter(Object adaptable, String adapterTypeName) {
-		return getFactories(adaptable.getClass()).get(adapterTypeName) != null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.IAdapterManager#loadAdapter(java.lang.Object, java.lang.String)
-	 */
-	public Object loadAdapter(Object adaptable, String adapterTypeName) {
-		return getAdapter(adaptable, adapterTypeName, true);
-	}
-
-	/*
-	 * @see IAdapterManager#registerAdapters
-	 */
-	public synchronized void registerAdapters(IAdapterFactory factory, Class adaptable) {
-		registerFactory(factory, adaptable.getName());
-		flushLookup();
-	}
-
-	/*
-	 * @see IAdapterManager#registerAdapters
-	 */
-	public void registerFactory(IAdapterFactory factory, String adaptableType) {
-		List list = (List) factories.get(adaptableType);
-		if (list == null) {
-			list = new ArrayList(5);
-			factories.put(adaptableType, list);
-		}
-		list.add(factory);
-	}
-
-	/*
-	 * @see IAdapterManager#unregisterAdapters
-	 */
-	public synchronized void unregisterAdapters(IAdapterFactory factory) {
-		for (Iterator it = factories.values().iterator(); it.hasNext();)
-			((List) it.next()).remove(factory);
-		flushLookup();
-	}
-
-	/*
-	 * @see IAdapterManager#unregisterAdapters
-	 */
-	public synchronized void unregisterAdapters(IAdapterFactory factory, Class adaptable) {
-		List factoryList = (List) factories.get(adaptable.getName());
-		if (factoryList == null)
-			return;
-		factoryList.remove(factory);
-		flushLookup();
-	}
-
-	/*
-	 * Shuts down the adapter manager by removing all factories
-	 * and removing the registry change listener. Should only be
-	 * invoked during platform shutdown.
-	 */
-	public synchronized void unregisterAllAdapters() {
-		factories.clear();
-		flushLookup();
-	}
-
-	public HashMap getFactories() {
-		return factories;
-	}
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/CommonMessages.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/CommonMessages.java
deleted file mode 100644
index af00d3d..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/CommonMessages.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.runtime;
-
-import org.eclipse.osgi.util.NLS;
-
-// Common runtime plugin message catalog
-public class CommonMessages extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.core.internal.runtime.commonMessages"; //$NON-NLS-1$
-
-	public static String ok;
-
-	// metadata
-	public static String meta_couldNotCreate;
-	public static String meta_instanceDataUnspecified;
-	public static String meta_noDataModeSpecified;
-	public static String meta_notDir;
-	public static String meta_readonly;
-	public static String meta_pluginProblems;
-
-	// parsing/resolve
-	public static String parse_doubleSeparatorVersion;
-	public static String parse_emptyPluginVersion;
-	public static String parse_fourElementPluginVersion;
-	public static String parse_numericMajorComponent;
-	public static String parse_numericMinorComponent;
-	public static String parse_numericServiceComponent;
-	public static String parse_oneElementPluginVersion;
-
-	public static String parse_postiveMajor;
-	public static String parse_postiveMinor;
-	public static String parse_postiveService;
-	public static String parse_separatorEndVersion;
-	public static String parse_separatorStartVersion;
-
-	// FileMananger messages
-	public static String fileManager_cannotLock;
-	public static String fileManager_couldNotSave;
-	public static String fileManager_updateFailed;
-	public static String fileManager_illegalInReadOnlyMode;
-	public static String fileManager_notOpen;
-
-	static {
-		// load message values from bundle file
-		reloadMessages();
-	}
-
-	public static void reloadMessages() {
-		NLS.initializeMessages(BUNDLE_NAME, CommonMessages.class);
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/CommonOSGiUtils.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/CommonOSGiUtils.java
deleted file mode 100644
index b4aae6b..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/CommonOSGiUtils.java
+++ /dev/null
@@ -1,180 +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.runtime;
-
-import java.util.Date;
-import java.util.ResourceBundle;
-import org.eclipse.osgi.framework.log.FrameworkLog;
-import org.eclipse.osgi.service.datalocation.Location;
-import org.eclipse.osgi.service.localization.BundleLocalization;
-import org.osgi.framework.*;
-import org.osgi.service.packageadmin.PackageAdmin;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * The class contains a set of helper methods for the runtime content plugin.
- * The following utility methods are supplied:
- * - provides framework log
- * - provides some bundle discovery funtionality
- * - provides some location services
- * 
- * The closeServices() method should be called before the plugin is stopped.
- *  
- * This class can only be used if OSGi plugin is available.
- * 
- * @since org.eclipse.equinox.common 1.0
- */
-public class CommonOSGiUtils {
-	private ServiceTracker logTracker = null;
-	private ServiceTracker bundleTracker = null;
-	private ServiceTracker instanceLocationTracker = null;
-	private ServiceTracker localizationTracker = null;
-
-	// OSGI system properties.  Copied from EclipseStarter
-	public static final String PROP_INSTANCE_AREA = "osgi.instance.area"; //$NON-NLS-1$
-
-	private static final CommonOSGiUtils singleton = new CommonOSGiUtils();
-
-	public static CommonOSGiUtils getDefault() {
-		return singleton;
-	}
-
-	/**
-	 * Private constructor to block instance creation.
-	 */
-	private CommonOSGiUtils() {
-		super();
-		initServices();
-	}
-
-	/**
-	 * 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());
-	}
-
-	private void initServices() {
-		BundleContext context = Activator.getContext();
-		if (context == null) {
-			message("CommonOSGiUtils called before plugin started"); //$NON-NLS-1$
-			return;
-		}
-
-		logTracker = new ServiceTracker(context, FrameworkLog.class.getName(), null);
-		logTracker.open();
-
-		bundleTracker = new ServiceTracker(context, PackageAdmin.class.getName(), null);
-		bundleTracker.open();
-
-		// locations
-
-		final String FILTER_PREFIX = "(&(objectClass=org.eclipse.osgi.service.datalocation.Location)(type="; //$NON-NLS-1$
-		Filter filter = null;
-		try {
-			filter = context.createFilter(FILTER_PREFIX + PROP_INSTANCE_AREA + "))"); //$NON-NLS-1$
-		} catch (InvalidSyntaxException e) {
-			// ignore this.  It should never happen as we have tested the above format.
-		}
-		instanceLocationTracker = new ServiceTracker(context, filter, null);
-		instanceLocationTracker.open();
-	}
-
-	void closeServices() {
-		if (localizationTracker != null) {
-			localizationTracker.close();
-			localizationTracker = null;
-		}
-		if (logTracker != null) {
-			logTracker.close();
-			logTracker = null;
-		}
-		if (bundleTracker != null) {
-			bundleTracker.close();
-			bundleTracker = null;
-		}
-		if (instanceLocationTracker != null) {
-			instanceLocationTracker.close();
-			instanceLocationTracker = null;
-		}
-	}
-
-	public FrameworkLog getFrameworkLog() {
-		if (logTracker != null)
-			return (FrameworkLog) logTracker.getService();
-		message("Log tracker is not set"); //$NON-NLS-1$
-		return null;
-	}
-
-	public Bundle[] getFragments(Bundle bundle) {
-		if (bundleTracker == null) {
-			message("Bundle tracker is not set"); //$NON-NLS-1$
-			return null;
-		}
-		PackageAdmin packageAdmin = (PackageAdmin) bundleTracker.getService();
-		if (packageAdmin == null)
-			return null;
-		return packageAdmin.getFragments(bundle);
-	}
-
-	public Location getInstanceLocation() {
-		if (instanceLocationTracker != null)
-			return (Location) instanceLocationTracker.getService();
-		else
-			return null;
-	}
-
-	public ResourceBundle getLocalization(Bundle bundle, String locale) {
-		if (localizationTracker == null) {
-			BundleContext context = Activator.getContext();
-			if (context == null) {
-				message("ResourceTranslator called before plugin is started"); //$NON-NLS-1$
-				return null;
-			}
-			localizationTracker = new ServiceTracker(context, BundleLocalization.class.getName(), null);
-			localizationTracker.open();
-		}
-		BundleLocalization location = (BundleLocalization) localizationTracker.getService();
-		if (location != null)
-			return location.getLocalization(bundle, locale);
-
-		return null;
-	}
-
-	/**
-	 * Returns the bundle id of the bundle that contains the provided object, or
-	 * <code>null</code> if the bundle could not be determined.
-	 */
-	public String getBundleId(Object object) {
-		if (object == null)
-			return null;
-		if (bundleTracker == null) {
-			message("Bundle tracker is not set"); //$NON-NLS-1$
-			return null;
-		}
-		PackageAdmin packageAdmin = (PackageAdmin) bundleTracker.getService();
-		if (packageAdmin == null)
-			return null;
-
-		Bundle source = packageAdmin.getBundle(object.getClass());
-		if (source != null && source.getSymbolicName() != null)
-			return source.getSymbolicName();
-		return null;
-	}
-
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/DataArea.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/DataArea.java
deleted file mode 100644
index 6eaf5f6..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/DataArea.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import org.eclipse.core.runtime.*;
-import org.eclipse.osgi.service.datalocation.Location;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.Bundle;
-
-/**
- * This class can only be used if OSGi plugin is available
- */
-public class DataArea {
-	/* package */static final String F_META_AREA = ".metadata"; //$NON-NLS-1$
-	/* package */static final String F_PLUGIN_DATA = ".plugins"; //$NON-NLS-1$
-	/* package */static final String F_LOG = ".log"; //$NON-NLS-1$
-	/**
-	 * Internal name of the preference storage file (value <code>"pref_store.ini"</code>) in this plug-in's (read-write) state area.
-	 */
-	/* package */static final String PREFERENCES_FILE_NAME = "pref_store.ini"; //$NON-NLS-1$
-
-	private IPath location; //The location of the instance data
-	private boolean initialized = false;
-
-	protected void assertLocationInitialized() throws IllegalStateException {
-		if (location != null && initialized)
-			return;
-		Location service = CommonOSGiUtils.getDefault().getInstanceLocation();
-		if (service == null)
-			throw new IllegalStateException(CommonMessages.meta_noDataModeSpecified);
-		try {
-			URL url = service.getURL();
-			if (url == null)
-				throw new IllegalStateException(CommonMessages.meta_instanceDataUnspecified);
-			// TODO assume the URL is a file: 
-			// Use the new File technique to ensure that the resultant string is 
-			// in the right format (e.g., leading / removed from /c:/foo etc)
-			location = new Path(new File(url.getFile()).toString());
-			initializeLocation();
-		} catch (CoreException e) {
-			throw new IllegalStateException(e.getMessage());
-		}
-	}
-
-	public IPath getMetadataLocation() throws IllegalStateException {
-		assertLocationInitialized();
-		return location.append(F_META_AREA);
-	}
-
-	public IPath getInstanceDataLocation() throws IllegalStateException {
-		assertLocationInitialized();
-		return location;
-	}
-
-	public IPath getLogLocation() throws IllegalStateException {
-		return new Path(CommonOSGiUtils.getDefault().getFrameworkLog().getFile().getAbsolutePath());
-	}
-
-	/**
-	 * Returns the read/write location in which the given bundle can manage private state.
-	 */
-	public IPath getStateLocation(Bundle bundle) throws IllegalStateException {
-		assertLocationInitialized();
-		return getStateLocation(bundle.getSymbolicName());
-	}
-
-	public IPath getStateLocation(String bundleName) throws IllegalStateException {
-		assertLocationInitialized();
-		return getMetadataLocation().append(F_PLUGIN_DATA).append(bundleName);
-	}
-
-	public IPath getPreferenceLocation(String bundleName, boolean create) throws IllegalStateException {
-		IPath result = getStateLocation(bundleName);
-		if (create)
-			result.toFile().mkdirs();
-		return result.append(PREFERENCES_FILE_NAME);
-	}
-
-	private void initializeLocation() throws CoreException {
-		// check if the location can be created
-		if (location.toFile().exists()) {
-			if (!location.toFile().isDirectory()) {
-				String message = NLS.bind(CommonMessages.meta_notDir, location);
-				throw new CoreException(new Status(IStatus.ERROR, IRuntimeConstants.PI_RUNTIME, IRuntimeConstants.FAILED_WRITE_METADATA, message, null));
-			}
-		}
-		//try infer the device if there isn't one (windows)
-		if (location.getDevice() == null)
-			location = new Path(location.toFile().getAbsolutePath());
-		createLocation();
-		initialized = true;
-	}
-
-	private void createLocation() throws CoreException {
-		// append on the metadata location so that the whole structure is created.  
-		File file = location.append(F_META_AREA).toFile();
-		try {
-			file.mkdirs();
-		} catch (Exception e) {
-			String message = NLS.bind(CommonMessages.meta_couldNotCreate, file.getAbsolutePath());
-			throw new CoreException(new Status(IStatus.ERROR, IRuntimeConstants.PI_RUNTIME, IRuntimeConstants.FAILED_WRITE_METADATA, message, e));
-		}
-		if (!file.canWrite()) {
-			String message = NLS.bind(CommonMessages.meta_readonly, file.getAbsolutePath());
-			throw new CoreException(new Status(IStatus.ERROR, IRuntimeConstants.PI_RUNTIME, IRuntimeConstants.FAILED_WRITE_METADATA, message, null));
-		}
-		// set the log file location now that we created the data area
-		IPath path = location.append(F_META_AREA).append(F_LOG);
-		try {
-			CommonOSGiUtils.getDefault().getFrameworkLog().setFile(path.toFile(), true);
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/DevClassPathHelper.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/DevClassPathHelper.java
deleted file mode 100644
index de1e022..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/DevClassPathHelper.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.internal.runtime;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.*;
-
-public class DevClassPathHelper {
-
-	// command line options
-	public static final String PROP_DEV = "osgi.dev"; //$NON-NLS-1$
-
-	static protected boolean inDevelopmentMode = false;
-	static protected String[] devDefaultClasspath;
-	static protected Properties devProperties = null;
-
-	static {
-		// Check the osgi.dev property to see if dev classpath entries have been defined.
-		String osgiDev = Activator.getContext() == null ? System.getProperty(PROP_DEV) : Activator.getContext().getProperty(PROP_DEV);
-		if (osgiDev != null) {
-			try {
-				inDevelopmentMode = true;
-				URL location = new URL(osgiDev);
-				devProperties = load(location);
-				if (devProperties != null)
-					devDefaultClasspath = getArrayFromList(devProperties.getProperty("*")); //$NON-NLS-1$
-			} catch (MalformedURLException e) {
-				devDefaultClasspath = getArrayFromList(osgiDev);
-			}
-		}
-	}
-
-	public static String[] getDevClassPath(String id) {
-		String[] result = null;
-		if (id != null && devProperties != null) {
-			String entry = devProperties.getProperty(id);
-			if (entry != null)
-				result = getArrayFromList(entry);
-		}
-		if (result == null)
-			result = devDefaultClasspath;
-		return result;
-	}
-
-	/**
-	 * Returns the result of converting a list of comma-separated tokens into an array
-	 * 
-	 * @return the array of string tokens
-	 * @param prop the initial comma-separated string
-	 */
-	public static String[] getArrayFromList(String prop) {
-		if (prop == null || prop.trim().equals("")) //$NON-NLS-1$
-			return new String[0];
-		Vector list = new Vector();
-		StringTokenizer tokens = new StringTokenizer(prop, ","); //$NON-NLS-1$
-		while (tokens.hasMoreTokens()) {
-			String token = tokens.nextToken().trim();
-			if (!token.equals("")) //$NON-NLS-1$
-				list.addElement(token);
-		}
-		return list.isEmpty() ? new String[0] : (String[]) list.toArray(new String[list.size()]);
-	}
-
-	public static boolean inDevelopmentMode() {
-		return inDevelopmentMode;
-	}
-
-	/*
-	 * Load the given properties file
-	 */
-	private static Properties load(URL url) {
-		Properties props = new Properties();
-		try {
-			InputStream is = null;
-			try {
-				is = url.openStream();
-				props.load(is);
-			} finally {
-				if (is != null)
-					is.close();
-			}
-		} catch (IOException e) {
-			// TODO consider logging here
-		}
-		return props;
-	}
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/FindSupport.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/FindSupport.java
deleted file mode 100644
index caa5aaf..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/FindSupport.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Map;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.osgi.framework.Bundle;
-
-// This class provides implements the find* methods exposed on Platform.
-// It does the lookup in bundles and fragments and does the variable replacement.
-// Can only be used if OSGi is available.
-public class FindSupport {
-	// OSGI system properties
-	public static final String PROP_NL = "osgi.nl"; //$NON-NLS-1$
-	public static final String PROP_OS = "osgi.os"; //$NON-NLS-1$
-	public static final String PROP_WS = "osgi.ws"; //$NON-NLS-1$
-	public static final String PROP_ARCH = "osgi.arch"; //$NON-NLS-1$
-
-	private static String[] NL_JAR_VARIANTS = buildNLVariants(Activator.getContext() == null ? System.getProperty(PROP_NL) : Activator.getContext().getProperty(PROP_NL));
-
-	private static String[] buildNLVariants(String nl) {
-		ArrayList result = new ArrayList();
-		IPath base = new Path("nl"); //$NON-NLS-1$
-
-		IPath path = new Path(nl.replace('_', '/'));
-		while (path.segmentCount() > 0) {
-			result.add(base.append(path).toString());
-			// for backwards compatibility only, don't replace the slashes
-			if (path.segmentCount() > 1)
-				result.add(base.append(path.toString().replace('/', '_')).toString());
-			path = path.removeLastSegments(1);
-		}
-
-		return (String[]) result.toArray(new String[result.size()]);
-	}
-
-	/**
-	 * See doc on @link Platform#find(Bundle, IPath) Platform#find(Bundle, IPath) 
-	 */
-	public static URL find(Bundle bundle, IPath path) {
-		return find(bundle, path, null);
-	}
-
-	/**
-	 * See doc on @link Platform#find(Bundle, IPath, Map) Platform#find(Bundle, IPath, Map) 
-	 */
-	public static URL find(Bundle b, IPath path, Map override) {
-		if (path == null)
-			return null;
-
-		URL result = null;
-
-		// Check for the empty or root case first
-		if (path.isEmpty() || path.isRoot()) {
-			// Watch for the root case.  It will produce a new
-			// URL which is only the root directory (and not the
-			// root of this plugin).	
-			result = findInPlugin(b, Path.EMPTY);
-			if (result == null)
-				result = findInFragments(b, Path.EMPTY);
-			return result;
-		}
-
-		// Now check for paths without variable substitution
-		String first = path.segment(0);
-		if (first.charAt(0) != '$') {
-			result = findInPlugin(b, path);
-			if (result == null)
-				result = findInFragments(b, path);
-			return result;
-		}
-
-		// Worry about variable substitution
-		IPath rest = path.removeFirstSegments(1);
-		if (first.equalsIgnoreCase("$nl$")) //$NON-NLS-1$
-			return findNL(b, rest, override);
-		if (first.equalsIgnoreCase("$os$")) //$NON-NLS-1$
-			return findOS(b, rest, override);
-		if (first.equalsIgnoreCase("$ws$")) //$NON-NLS-1$
-			return findWS(b, rest, override);
-		if (first.equalsIgnoreCase("$files$")) //$NON-NLS-1$
-			return null;
-
-		return null;
-	}
-
-	private static URL findOS(Bundle b, IPath path, Map override) {
-		String os = null;
-		if (override != null)
-			try {
-				// check for override
-				os = (String) override.get("$os$"); //$NON-NLS-1$
-			} catch (ClassCastException e) {
-				// just in case
-			}
-		if (os == null)
-			// use default
-			os = Activator.getContext().getProperty(PROP_OS);
-		if (os.length() == 0)
-			return null;
-
-		// Now do the same for osarch
-		String osArch = null;
-		if (override != null)
-			try {
-				// check for override
-				osArch = (String) override.get("$arch$"); //$NON-NLS-1$
-			} catch (ClassCastException e) {
-				// just in case
-			}
-		if (osArch == null)
-			// use default
-			osArch = Activator.getContext().getProperty(PROP_ARCH);
-		if (osArch.length() == 0)
-			return null;
-
-		URL result = null;
-		IPath base = new Path("os").append(os).append(osArch); //$NON-NLS-1$
-		// Keep doing this until all you have left is "os" as a path
-		while (base.segmentCount() != 1) {
-			IPath filePath = base.append(path);
-			result = findInPlugin(b, filePath);
-			if (result != null)
-				return result;
-			result = findInFragments(b, filePath);
-			if (result != null)
-				return result;
-			base = base.removeLastSegments(1);
-		}
-		// If we get to this point, we haven't found it yet.
-		// Look in the plugin and fragment root directories
-		result = findInPlugin(b, path);
-		if (result != null)
-			return result;
-		return findInFragments(b, path);
-	}
-
-	private static URL findWS(Bundle b, IPath path, Map override) {
-		String ws = null;
-		if (override != null)
-			try {
-				// check for override
-				ws = (String) override.get("$ws$"); //$NON-NLS-1$
-			} catch (ClassCastException e) {
-				// just in case
-			}
-		if (ws == null)
-			// use default
-			ws = Activator.getContext().getProperty(PROP_WS);
-		IPath filePath = new Path("ws").append(ws).append(path); //$NON-NLS-1$
-		// We know that there is only one segment to the ws path
-		// e.g. ws/win32	
-		URL result = findInPlugin(b, filePath);
-		if (result != null)
-			return result;
-		result = findInFragments(b, filePath);
-		if (result != null)
-			return result;
-		// If we get to this point, we haven't found it yet.
-		// Look in the plugin and fragment root directories
-		result = findInPlugin(b, path);
-		if (result != null)
-			return result;
-		return findInFragments(b, path);
-	}
-
-	private static URL findNL(Bundle b, IPath path, Map override) {
-		String nl = null;
-		String[] nlVariants = null;
-		if (override != null)
-			try {
-				// check for override
-				nl = (String) override.get("$nl$"); //$NON-NLS-1$
-			} catch (ClassCastException e) {
-				// just in case
-			}
-		nlVariants = nl == null ? NL_JAR_VARIANTS : buildNLVariants(nl);
-		if (nl != null && nl.length() == 0)
-			return null;
-
-		URL result = null;
-		for (int i = 0; i < nlVariants.length; i++) {
-			IPath filePath = new Path(nlVariants[i]).append(path);
-			result = findInPlugin(b, filePath);
-			if (result != null)
-				return result;
-			result = findInFragments(b, filePath);
-			if (result != null)
-				return result;
-		}
-		// If we get to this point, we haven't found it yet.
-		// Look in the plugin and fragment root directories
-		result = findInPlugin(b, path);
-		if (result != null)
-			return result;
-		return findInFragments(b, path);
-	}
-
-	private static URL findInPlugin(Bundle b, IPath filePath) {
-		return b.getEntry(filePath.toString());
-	}
-
-	private static URL findInFragments(Bundle b, IPath filePath) {
-		Bundle[] fragments = CommonOSGiUtils.getDefault().getFragments(b);
-		if (fragments == null)
-			return null;
-
-		URL fileURL = null;
-		int i = 0;
-		while (i < fragments.length && fileURL == null) {
-			fileURL = fragments[i].getEntry(filePath.toString());
-			i++;
-		}
-		return fileURL;
-	}
-
-	/**
-	 * See doc on @link Platform#openStream(Bundle, IPath, boolean) Platform#Platform#openStream(Bundle, IPath, boolean) 
-	 */
-	public static final InputStream openStream(Bundle bundle, IPath file, boolean localized) throws IOException {
-		URL url = null;
-		if (!localized) {
-			url = findInPlugin(bundle, file);
-			if (url == null)
-				url = findInFragments(bundle, file);
-		} else {
-			url = FindSupport.find(bundle, file);
-		}
-		if (url != null)
-			return url.openStream();
-		throw new IOException("Cannot find " + file.toString()); //$NON-NLS-1$
-	}
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/IAdapterFactoryExt.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/IAdapterFactoryExt.java
deleted file mode 100644
index c473980..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/IAdapterFactoryExt.java
+++ /dev/null
@@ -1,31 +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.runtime;
-
-import org.eclipse.core.runtime.IAdapterFactory;
-
-/**
- * An internal interface that exposes portion of AdapterFactoryProxy functionality
- * without the need to import the class itself.
- */
-public interface IAdapterFactoryExt {
-
-	/**
-	 * Loads the real adapter factory, but only if its associated plug-in is
-	 * already loaded. Returns the real factory if it was successfully loaded.
-	 * @param force if <code>true</code> the plugin providing the 
-	 * factory will be loaded if necessary, otherwise no plugin activations
-	 * will occur.
-	 */
-	public IAdapterFactory loadFactory(boolean force);
-
-	public String[] getAdapterNames();
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/IRuntimeConstants.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/IRuntimeConstants.java
deleted file mode 100644
index a31af5b..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/IRuntimeConstants.java
+++ /dev/null
@@ -1,37 +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.runtime;
-
-public interface IRuntimeConstants {
-
-	/**
-	 * The unique identifier constant (value "<code>org.eclipse.core.runtime</code>")
-	 * of the Core Runtime (pseudo-) plug-in.
-	 */
-	public static final String PI_RUNTIME = "org.eclipse.core.runtime"; //$NON-NLS-1$
-
-	/**
-	 * Name of this bundle.
-	 */
-	public static final String NAME = "org.eclipse.runtime.common"; //$NON-NLS-1$
-
-	/**
-	 * Status code constant (value 2) indicating an error occurred while running a plug-in.
-	 */
-	public static final int PLUGIN_ERROR = 2;
-
-	/**
-	 * Status code constant (value 5) indicating the platform could not write
-	 * some of its metadata.
-	 */
-	public static final int FAILED_WRITE_METADATA = 5;
-
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/ListenerList.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/ListenerList.java
deleted file mode 100644
index 3b0e49e..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/ListenerList.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-/**
- * This class is going to be removed soon.
- * Please use org.eclipse.core.runtime.ListenerList
- * 
- * @deprecated
- */
-// TODO remove this class
-public class ListenerList {
-
-	/**
-	 * The empty array singleton instance.
-	 */
-	private static final Object[] EmptyArray = new Object[0];
-
-	/**
-	 * Mode constant (value 0) indicating that listeners should be considered
-	 * the <a href="#same">same</a> if they are equal.
-	 */
-	public static final int EQUALITY = 0;
-
-	/**
-	 * Mode constant (value 1) indicating that listeners should be considered
-	 * the <a href="#same">same</a> if they are identical.
-	 */
-	public static final int IDENTITY = 1;
-
-	/**
-	 * Indicates the comparison mode used to determine if two
-	 * listeners are equivalent
-	 */
-	private final boolean identity;
-
-	/**
-	 * The list of listeners.  Initially empty but initialized
-	 * to an array of size capacity the first time a listener is added.
-	 * Maintains invariant: listeners != null
-	 */
-	private volatile Object[] listeners = EmptyArray;
-
-	/**
-	 * Creates a listener list in which listeners are compared using equality.
-	 */
-	public ListenerList() {
-		this(EQUALITY);
-	}
-
-	/**
-	 * Creates a listener list using the provided comparison mode.
-	 * 
-	 * @param mode The mode used to determine if listeners are the <a href="#same">same</a>.
-	 */
-	public ListenerList(int mode) {
-		if (mode != EQUALITY && mode != IDENTITY)
-			throw new IllegalArgumentException();
-		this.identity = mode == IDENTITY;
-	}
-
-	/**
-	 * Adds a listener to this list. This method has no effect if the <a href="#same">same</a>
-	 * listener is already registered.
-	 * 
-	 * @param listener the listener to add
-	 */
-	public synchronized void add(Object listener) {
-		// This method is synchronized to protect against multiple threads adding 
-		// or removing listeners concurrently. This does not block concurrent readers.
-		if (listener == null)
-			throw new IllegalArgumentException();
-		// check for duplicates 
-		final int oldSize = listeners.length;
-		for (int i = 0; i < oldSize; ++i) {
-			Object listener2 = listeners[i];
-			if (identity ? listener == listener2 : listener.equals(listener2))
-				return;
-		}
-		// Thread safety: create new array to avoid affecting concurrent readers
-		Object[] newListeners = new Object[oldSize + 1];
-		System.arraycopy(listeners, 0, newListeners, 0, oldSize);
-		newListeners[oldSize] = listener;
-		//atomic assignment
-		this.listeners = newListeners;
-	}
-
-	/**
-	 * Returns an array containing all the registered listeners.
-	 * The resulting array is unaffected by subsequent adds or removes.
-	 * If there are no listeners registered, the result is an empty array.
-	 * Use this method when notifying listeners, so that any modifications
-	 * to the listener list during the notification will have no effect on 
-	 * the notification itself.
-	 * <p>
-	 * Note: Callers of this method <b>must not</b> modify the returned array. 
-	 *
-	 * @return the list of registered listeners
-	 */
-	public Object[] getListeners() {
-		return listeners;
-	}
-
-	/**
-	 * Returns whether this listener list is empty.
-	 *
-	 * @return <code>true</code> if there are no registered listeners, and
-	 *   <code>false</code> otherwise
-	 */
-	public boolean isEmpty() {
-		return listeners.length == 0;
-	}
-
-	/**
-	 * Removes a listener from this list. Has no effect if the <a href="#same">same</a> 
-	 * listener was not already registered.
-	 *
-	 * @param listener the listener to remove
-	 */
-	public synchronized void remove(Object listener) {
-		// This method is synchronized to protect against multiple threads adding 
-		// or removing listeners concurrently. This does not block concurrent readers.
-		if (listener == null)
-			throw new IllegalArgumentException();
-		int oldSize = listeners.length;
-		for (int i = 0; i < oldSize; ++i) {
-			Object listener2 = listeners[i];
-			if (identity ? listener == listener2 : listener.equals(listener2)) {
-				if (oldSize == 1) {
-					listeners = EmptyArray;
-				} else {
-					// Thread safety: create new array to avoid affecting concurrent readers
-					Object[] newListeners = new Object[oldSize - 1];
-					System.arraycopy(listeners, 0, newListeners, 0, i);
-					System.arraycopy(listeners, i + 1, newListeners, i, oldSize - i - 1);
-					//atomic assignment to field
-					this.listeners = newListeners;
-				}
-				return;
-			}
-		}
-	}
-
-	/**
-	 * Returns the number of registered listeners.
-	 *
-	 * @return the number of registered listeners
-	 */
-	public int size() {
-		return listeners.length;
-	}
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/MessageResourceBundle.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/MessageResourceBundle.java
deleted file mode 100644
index 4f7564e..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/MessageResourceBundle.java
+++ /dev/null
@@ -1,225 +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.runtime;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.*;
-import org.eclipse.core.runtime.Status;
-
-/**
- * This class is used for NLS processing in plugins that can't depend on OSGi.
- * 
- * Class responsible for loading message values from a property file
- * and assigning them directly to the fields of a messages class.
- * 
- * Copied from org.eclipse.osgi.framework.internal.core.MessageResourceBundle as of August 30, 2005.
- * Debug code removed; logging is done via RuntimeLog.
- * 
- * @since org.eclipse.equinox.common 1.0
- */
-public class MessageResourceBundle {
-	/**
-	 * Class which sub-classes java.util.Properties and uses the #put method
-	 * to set field values rather than storing the values in the table.
-	 * 
-	 * @since 3.1
-	 */
-	private static class MessagesProperties extends Properties {
-
-		private static final int MOD_EXPECTED = Modifier.PUBLIC | Modifier.STATIC;
-		private static final int MOD_MASK = MOD_EXPECTED | Modifier.FINAL;
-		private static final long serialVersionUID = 1L;
-
-		private final String bundleName;
-		private final Map fields;
-		private final boolean isAccessible;
-
-		public MessagesProperties(Map fieldMap, String bundleName, boolean isAccessible) {
-			super();
-			this.fields = fieldMap;
-			this.bundleName = bundleName;
-			this.isAccessible = isAccessible;
-		}
-
-		/* (non-Javadoc)
-		 * @see java.util.Hashtable#put(java.lang.Object, java.lang.Object)
-		 */
-		public synchronized Object put(Object key, Object value) {
-			Object fieldObject = fields.put(key, ASSIGNED);
-			// if already assigned, there is nothing to do
-			if (fieldObject == ASSIGNED)
-				return null;
-			if (fieldObject == null) {
-				final String msg = "NLS unused message: " + key + " in: " + bundleName;//$NON-NLS-1$ //$NON-NLS-2$
-				log(SEVERITY_WARNING, msg, null);
-				return null;
-			}
-			final Field field = (Field) fieldObject;
-			//can only set value of public static non-final fields
-			if ((field.getModifiers() & MOD_MASK) != MOD_EXPECTED)
-				return null;
-			try {
-				// Check to see if we are allowed to modify the field. If we aren't (for instance 
-				// if the class is not public) then change the accessible attribute of the field
-				// before trying to set the value.
-				if (!isAccessible)
-					makeAccessible(field);
-				// Set the value into the field. We should never get an exception here because
-				// we know we have a public static non-final field. If we do get an exception, silently
-				// log it and continue. This means that the field will (most likely) be un-initialized and
-				// will fail later in the code and if so then we will see both the NPE and this error.
-				field.set(null, value);
-			} catch (Exception e) {
-				log(SEVERITY_ERROR, "Exception setting field value.", e); //$NON-NLS-1$
-			}
-			return null;
-		}
-	}
-
-	/**
-	 * This object is assigned to the value of a field map to indicate
-	 * that a translated message has already been assigned to that field.
-	 */
-	static final Object ASSIGNED = new Object();
-
-	private static final String EXTENSION = ".properties"; //$NON-NLS-1$
-
-	private static String[] nlSuffixes;
-
-	static int SEVERITY_ERROR = 0x04;
-
-	static int SEVERITY_WARNING = 0x02;
-
-	/*
-	 * Build an array of property files to search.  The returned array contains
-	 * the property fields in order from most specific to most generic.
-	 * So, in the FR_fr locale, it will return file_fr_FR.properties, then
-	 * file_fr.properties, and finally file.properties.
-	 */
-	private static String[] buildVariants(String root) {
-		if (nlSuffixes == null) {
-			//build list of suffixes for loading resource bundles
-			String nl = Locale.getDefault().toString();
-			ArrayList result = new ArrayList(4);
-			int lastSeparator;
-			while (true) {
-				result.add('_' + nl + EXTENSION);
-				lastSeparator = nl.lastIndexOf('_');
-				if (lastSeparator == -1)
-					break;
-				nl = nl.substring(0, lastSeparator);
-			}
-			//add the empty suffix last (most general)
-			result.add(EXTENSION);
-			nlSuffixes = (String[]) result.toArray(new String[result.size()]);
-		}
-		root = root.replace('.', '/');
-		String[] variants = new String[nlSuffixes.length];
-		for (int i = 0; i < variants.length; i++)
-			variants[i] = root + nlSuffixes[i];
-		return variants;
-	}
-
-	/*
-	 * Change the accessibility of the specified field so we can set its value
-	 * to be the appropriate message string.
-	 */
-	static void makeAccessible(final Field field) {
-		if (System.getSecurityManager() == null) {
-			field.setAccessible(true);
-		} else {
-			AccessController.doPrivileged(new PrivilegedAction() {
-				public Object run() {
-					field.setAccessible(true);
-					return null;
-				}
-			});
-		}
-	}
-
-	private static void computeMissingMessages(String bundleName, Class clazz, Map fieldMap, Field[] fieldArray, boolean isAccessible) {
-		// iterate over the fields in the class to make sure that there aren't any empty ones
-		final int MOD_EXPECTED = Modifier.PUBLIC | Modifier.STATIC;
-		final int MOD_MASK = MOD_EXPECTED | Modifier.FINAL;
-		final int numFields = fieldArray.length;
-		for (int i = 0; i < numFields; i++) {
-			Field field = fieldArray[i];
-			if ((field.getModifiers() & MOD_MASK) != MOD_EXPECTED)
-				continue;
-			//if the field has a a value assigned, there is nothing to do
-			if (fieldMap.get(field.getName()) == ASSIGNED)
-				continue;
-			try {
-				// Set a value for this empty field. We should never get an exception here because
-				// we know we have a public static non-final field. If we do get an exception, silently
-				// log it and continue. This means that the field will (most likely) be un-initialized and
-				// will fail later in the code and if so then we will see both the NPE and this error.
-				String value = "NLS missing message: " + field.getName() + " in: " + bundleName; //$NON-NLS-1$ //$NON-NLS-2$
-				log(SEVERITY_WARNING, value, null);
-				if (!isAccessible)
-					makeAccessible(field);
-				field.set(null, value);
-			} catch (Exception e) {
-				log(SEVERITY_ERROR, "Error setting the missing message value for: " + field.getName(), e); //$NON-NLS-1$
-			}
-		}
-	}
-
-	/**
-	 * Load the given resource bundle using the specified class loader.
-	 */
-	public static void load(final String bundleName, Class clazz) {
-		final Field[] fieldArray = clazz.getDeclaredFields();
-		ClassLoader loader = clazz.getClassLoader();
-
-		boolean isAccessible = (clazz.getModifiers() & Modifier.PUBLIC) != 0;
-
-		//build a map of field names to Field objects
-		final int len = fieldArray.length;
-		Map fields = new HashMap(len * 2);
-		for (int i = 0; i < len; i++)
-			fields.put(fieldArray[i].getName(), fieldArray[i]);
-
-		// search the variants from most specific to most general, since
-		// the MessagesProperties.put method will mark assigned fields
-		// to prevent them from being assigned twice
-		final String[] variants = buildVariants(bundleName);
-		for (int i = 0; i < variants.length; i++) {
-			final InputStream input = loader.getResourceAsStream(variants[i]);
-			if (input == null)
-				continue;
-			try {
-				final MessagesProperties properties = new MessagesProperties(fields, bundleName, isAccessible);
-				properties.load(input);
-			} catch (IOException e) {
-				log(SEVERITY_ERROR, "Error loading " + variants[i], e); //$NON-NLS-1$
-			} finally {
-				if (input != null)
-					try {
-						input.close();
-					} catch (IOException e) {
-						// ignore
-					}
-			}
-		}
-		computeMissingMessages(bundleName, clazz, fields, fieldArray, isAccessible);
-	}
-
-	private static void log(int severity, String msg, Exception e) {
-		RuntimeLog.log(new Status(severity, IRuntimeConstants.PI_RUNTIME, 0, msg, e));
-	}
-
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/MetaDataKeeper.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/MetaDataKeeper.java
deleted file mode 100644
index 164f318..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/MetaDataKeeper.java
+++ /dev/null
@@ -1,37 +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.runtime;
-
-import org.eclipse.core.internal.runtime.DataArea;
-
-/**
- * The class contains a set of utilities working platform metadata area.
- * This class can only be used if OSGi plugin is available.
- * 
- * Copied from InternalPlatform as of August 30, 2005.
- * @since org.eclipse.equinox.common 1.0
- */
-public class MetaDataKeeper {
-
-	private static DataArea metaArea = null;
-
-	/**
-	 * Returns the object which defines the location and organization
-	 * of the platform's meta area.
-	 */
-	public static DataArea getMetaArea() {
-		if (metaArea != null)
-			return metaArea;
-
-		metaArea = new DataArea();
-		return metaArea;
-	}
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/ReferenceHashSet.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/ReferenceHashSet.java
deleted file mode 100644
index eab95b9..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/ReferenceHashSet.java
+++ /dev/null
@@ -1,323 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import java.lang.ref.*;
-
-/**
- * A hashset whose values can be garbage collected.
- * This API is EXPERIMENTAL and provided as early access.
- * @since 3.1
- */
-public class ReferenceHashSet {
-
-	private interface HashedReference {
-		int hashCode();
-
-		Object get();
-	}
-
-	private class HashableWeakReference extends WeakReference implements HashedReference {
-		public int hashCode;
-
-		public HashableWeakReference(Object referent, ReferenceQueue queue) {
-			super(referent, queue);
-			this.hashCode = referent.hashCode();
-		}
-
-		public boolean equals(Object obj) {
-			if (!(obj instanceof HashableWeakReference))
-				return false;
-			Object referent = get();
-			Object other = ((HashableWeakReference) obj).get();
-			if (referent == null)
-				return other == null;
-			return referent.equals(other);
-		}
-
-		public int hashCode() {
-			return this.hashCode;
-		}
-
-		public String toString() {
-			Object referent = get();
-			if (referent == null)
-				return "[hashCode=" + this.hashCode + "] <referent was garbage collected>"; //$NON-NLS-1$  //$NON-NLS-2$
-			return "[hashCode=" + this.hashCode + "] " + referent.toString(); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-	}
-
-	private class HashableSoftReference extends SoftReference implements HashedReference {
-		public int hashCode;
-
-		public HashableSoftReference(Object referent, ReferenceQueue queue) {
-			super(referent, queue);
-			this.hashCode = referent.hashCode();
-		}
-
-		public boolean equals(Object obj) {
-			if (!(obj instanceof HashableWeakReference))
-				return false;
-			Object referent = get();
-			Object other = ((HashableWeakReference) obj).get();
-			if (referent == null)
-				return other == null;
-			return referent.equals(other);
-		}
-
-		public int hashCode() {
-			return this.hashCode;
-		}
-
-		public String toString() {
-			Object referent = get();
-			if (referent == null)
-				return "[hashCode=" + this.hashCode + "] <referent was garbage collected>"; //$NON-NLS-1$  //$NON-NLS-2$
-			return "[hashCode=" + this.hashCode + "] " + referent.toString(); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-	}
-
-	private class StrongReference implements HashedReference {
-		private Object referent;
-
-		public StrongReference(Object referent, ReferenceQueue queue) {
-			this.referent = referent;
-		}
-
-		public int hashCode() {
-			return referent.hashCode();
-		}
-
-		public Object get() {
-			return referent;
-		}
-
-		public boolean equals(Object obj) {
-			return referent.equals(obj);
-		}
-	}
-
-	HashedReference[] values;
-
-	public int elementSize; // number of elements in the table
-
-	int threshold;
-
-	ReferenceQueue referenceQueue = new ReferenceQueue();
-
-	public ReferenceHashSet() {
-		this(5);
-	}
-
-	public ReferenceHashSet(int size) {
-		this.elementSize = 0;
-		this.threshold = size; // size represents the expected
-		// number of elements
-		int extraRoom = (int) (size * 1.75f);
-		if (this.threshold == extraRoom)
-			extraRoom++;
-		this.values = new HashedReference[extraRoom];
-	}
-
-	/**
-	 * Constant indicating that hard references should be used.
-	 */
-	final public static int HARD = 0;
-
-	/**
-	 * Constant indiciating that soft references should be used.
-	 */
-	final public static int SOFT = 1;
-
-	/**
-	 * Constant indicating that weak references should be used.
-	 */
-	final public static int WEAK = 2;
-
-	private HashedReference toReference(int type, Object referent) {
-		switch (type) {
-			case HARD :
-				return new StrongReference(referent, referenceQueue);
-			case SOFT :
-				return new HashableSoftReference(referent, referenceQueue);
-			case WEAK :
-				return new HashableWeakReference(referent, referenceQueue);
-			default :
-				throw new Error();
-		}
-	}
-
-	/*
-	 * Adds the given object to this set. If an object that is equals to the
-	 * given object already exists, do nothing. Returns the existing object or
-	 * the new object if not found.
-	 */
-	public Object add(Object obj, int referenceType) {
-		cleanupGarbageCollectedValues();
-		int index = (obj.hashCode() & 0x7FFFFFFF) % this.values.length;
-		HashedReference currentValue;
-		while ((currentValue = this.values[index]) != null) {
-			Object referent;
-			if (obj.equals(referent = currentValue.get())) {
-				return referent;
-			}
-			index = (index + 1) % this.values.length;
-		}
-		this.values[index] = toReference(referenceType, obj);
-
-		// assumes the threshold is never equal to the size of the table
-		if (++this.elementSize > this.threshold)
-			rehash();
-
-		return obj;
-	}
-
-	private void addValue(HashedReference value) {
-		Object obj = value.get();
-		if (obj == null)
-			return;
-		int valuesLength = this.values.length;
-		int index = (value.hashCode() & 0x7FFFFFFF) % valuesLength;
-		HashedReference currentValue;
-		while ((currentValue = this.values[index]) != null) {
-			if (obj.equals(currentValue.get())) {
-				return;
-			}
-			index = (index + 1) % valuesLength;
-		}
-		this.values[index] = value;
-
-		// assumes the threshold is never equal to the size of the table
-		if (++this.elementSize > this.threshold)
-			rehash();
-	}
-
-	private void cleanupGarbageCollectedValues() {
-		HashedReference toBeRemoved;
-		while ((toBeRemoved = (HashedReference) this.referenceQueue.poll()) != null) {
-			int hashCode = toBeRemoved.hashCode();
-			int valuesLength = this.values.length;
-			int index = (hashCode & 0x7FFFFFFF) % valuesLength;
-			HashedReference currentValue;
-			while ((currentValue = this.values[index]) != null) {
-				if (currentValue == toBeRemoved) {
-					// replace the value at index with the last value with the
-					// same hash
-					int sameHash = index;
-					int current;
-					while ((currentValue = this.values[current = (sameHash + 1) % valuesLength]) != null && currentValue.hashCode() == hashCode)
-						sameHash = current;
-					this.values[index] = this.values[sameHash];
-					this.values[sameHash] = null;
-					this.elementSize--;
-					break;
-				}
-				index = (index + 1) % valuesLength;
-			}
-		}
-	}
-
-	public boolean contains(Object obj) {
-		return get(obj) != null;
-	}
-
-	/*
-	 * Return the object that is in this set and that is equals to the given
-	 * object. Return null if not found.
-	 */
-	public Object get(Object obj) {
-		cleanupGarbageCollectedValues();
-		int valuesLength = this.values.length;
-		int index = (obj.hashCode() & 0x7FFFFFFF) % valuesLength;
-		HashedReference currentValue;
-		while ((currentValue = this.values[index]) != null) {
-			Object referent;
-			if (obj.equals(referent = currentValue.get())) {
-				return referent;
-			}
-			index = (index + 1) % valuesLength;
-		}
-		return null;
-	}
-
-	private void rehash() {
-		ReferenceHashSet newHashSet = new ReferenceHashSet(this.elementSize * 2); // double the number of expected elements
-		newHashSet.referenceQueue = this.referenceQueue;
-		HashedReference currentValue;
-		for (int i = 0, length = this.values.length; i < length; i++)
-			if ((currentValue = this.values[i]) != null)
-				newHashSet.addValue(currentValue);
-
-		this.values = newHashSet.values;
-		this.threshold = newHashSet.threshold;
-		this.elementSize = newHashSet.elementSize;
-	}
-
-	/*
-	 * Removes the object that is in this set and that is equals to the given
-	 * object. Return the object that was in the set, or null if not found.
-	 */
-	public Object remove(Object obj) {
-		cleanupGarbageCollectedValues();
-		int valuesLength = this.values.length;
-		int index = (obj.hashCode() & 0x7FFFFFFF) % valuesLength;
-		HashedReference currentValue;
-		while ((currentValue = this.values[index]) != null) {
-			Object referent;
-			if (obj.equals(referent = currentValue.get())) {
-				this.elementSize--;
-				this.values[index] = null;
-				rehash();
-				return referent;
-			}
-			index = (index + 1) % valuesLength;
-		}
-		return null;
-	}
-
-	public int size() {
-		return this.elementSize;
-	}
-
-	public String toString() {
-		StringBuffer buffer = new StringBuffer("{"); //$NON-NLS-1$
-		for (int i = 0, length = this.values.length; i < length; i++) {
-			HashedReference value = this.values[i];
-			if (value != null) {
-				Object ref = value.get();
-				if (ref != null) {
-					buffer.append(ref.toString());
-					buffer.append(", "); //$NON-NLS-1$
-				}
-			}
-		}
-		buffer.append("}"); //$NON-NLS-1$
-		return buffer.toString();
-	}
-
-	public Object[] toArray() {
-		cleanupGarbageCollectedValues();
-		Object[] result = new Object[elementSize];
-		int resultSize = 0;
-		for (int i = 0; i < values.length; i++) {
-			if (values[i] == null)
-				continue;
-			Object tmp = values[i].get();
-			if (tmp != null)
-				result[resultSize++] = tmp;
-		}
-		if (result.length == resultSize)
-			return result;
-		Object[] finalResult = new Object[resultSize];
-		System.arraycopy(result, 0, finalResult, 0, resultSize);
-		return finalResult;
-	}
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/ResourceTranslator.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/ResourceTranslator.java
deleted file mode 100644
index f12aebc..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/ResourceTranslator.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.*;
-import org.eclipse.osgi.util.ManifestElement;
-import org.osgi.framework.*;
-
-/**
- * This class can only be used if OSGi plugin is available.
- */
-public class ResourceTranslator {
-	private static final String KEY_PREFIX = "%"; //$NON-NLS-1$
-	private static final String KEY_DOUBLE_PREFIX = "%%"; //$NON-NLS-1$	
-
-	public static String getResourceString(Bundle bundle, String value) {
-		return getResourceString(bundle, value, null);
-	}
-
-	public static String getResourceString(Bundle bundle, String value, ResourceBundle resourceBundle) {
-		String s = value.trim();
-		if (!s.startsWith(KEY_PREFIX, 0))
-			return s;
-		if (s.startsWith(KEY_DOUBLE_PREFIX, 0))
-			return s.substring(1);
-
-		int ix = s.indexOf(' ');
-		String key = ix == -1 ? s : s.substring(0, ix);
-		String dflt = ix == -1 ? s : s.substring(ix + 1);
-
-		if (resourceBundle == null && bundle != null) {
-			try {
-				resourceBundle = getResourceBundle(bundle);
-			} catch (MissingResourceException e) {
-				// just return the default (dflt)
-			}
-		}
-
-		if (resourceBundle == null)
-			return dflt;
-
-		try {
-			return resourceBundle.getString(key.substring(1));
-		} catch (MissingResourceException e) {
-			//this will avoid requiring a bundle access on the next lookup
-			return dflt;
-		}
-	}
-
-	public static ResourceBundle getResourceBundle(Bundle bundle) throws MissingResourceException {
-		if (hasRuntime21(bundle))
-			return ResourceBundle.getBundle("plugin", Locale.getDefault(), createTempClassloader(bundle)); //$NON-NLS-1$
-		return CommonOSGiUtils.getDefault().getLocalization(bundle, null);
-	}
-
-	private static boolean hasRuntime21(Bundle b) {
-		try {
-			ManifestElement[] prereqs = ManifestElement.parseHeader(Constants.REQUIRE_BUNDLE, (String) b.getHeaders("").get(Constants.REQUIRE_BUNDLE)); //$NON-NLS-1$
-			if (prereqs == null)
-				return false;
-			for (int i = 0; i < prereqs.length; i++) {
-				if ("2.1".equals(prereqs[i].getAttribute(Constants.BUNDLE_VERSION_ATTRIBUTE)) && "org.eclipse.core.runtime".equals(prereqs[i].getValue())) { //$NON-NLS-1$//$NON-NLS-2$
-					return true;
-				}
-			}
-		} catch (BundleException e) {
-			return false;
-		}
-		return false;
-	}
-
-	private static ClassLoader createTempClassloader(Bundle b) {
-		ArrayList classpath = new ArrayList();
-		addClasspathEntries(b, classpath);
-		addBundleRoot(b, classpath);
-		addDevEntries(b, classpath);
-		addFragments(b, classpath);
-		URL[] urls = new URL[classpath.size()];
-		return new URLClassLoader((URL[]) classpath.toArray(urls));
-	}
-
-	private static void addFragments(Bundle host, ArrayList classpath) {
-		Bundle[] fragments = CommonOSGiUtils.getDefault().getFragments(host);
-		if (fragments == null)
-			return;
-
-		for (int i = 0; i < fragments.length; i++) {
-			addClasspathEntries(fragments[i], classpath);
-			addDevEntries(fragments[i], classpath);
-		}
-	}
-
-	private static void addClasspathEntries(Bundle b, ArrayList classpath) {
-		ManifestElement[] classpathElements;
-		try {
-			classpathElements = ManifestElement.parseHeader(Constants.BUNDLE_CLASSPATH, (String) b.getHeaders("").get(Constants.BUNDLE_CLASSPATH)); //$NON-NLS-1$
-			if (classpathElements == null)
-				return;
-			for (int i = 0; i < classpathElements.length; i++) {
-				URL classpathEntry = b.getEntry(classpathElements[i].getValue());
-				if (classpathEntry != null)
-					classpath.add(classpathEntry);
-			}
-		} catch (BundleException e) {
-			//ignore
-		}
-	}
-
-	private static void addBundleRoot(Bundle b, ArrayList classpath) {
-		classpath.add(b.getEntry("/")); //$NON-NLS-1$
-	}
-
-	private static void addDevEntries(Bundle b, ArrayList classpath) {
-		if (!DevClassPathHelper.inDevelopmentMode())
-			return;
-
-		String[] binaryPaths = DevClassPathHelper.getDevClassPath(b.getSymbolicName());
-		for (int i = 0; i < binaryPaths.length; i++) {
-			URL classpathEntry = b.getEntry(binaryPaths[i]);
-			if (classpathEntry != null)
-				classpath.add(classpathEntry);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/RuntimeLog.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/RuntimeLog.java
deleted file mode 100644
index d0bd2a3..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/RuntimeLog.java
+++ /dev/null
@@ -1,94 +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
- *     Julian Chen - fix for bug #92572, jclRM
- *******************************************************************************/
-package org.eclipse.core.internal.runtime;
-
-import java.util.ArrayList;
-import org.eclipse.core.runtime.*;
-
-/**
- * NOT API!!!  This log infrastructure was split from the InternalPlatform.
- * 
- * @since org.eclipse.equinox.common 1.0
- */
-// XXX this must be removed and replaced with something more reasonable
-public final class RuntimeLog {
-
-	private static ArrayList logListeners = new ArrayList(5);
-
-	/**
-	 * @see Platform#addLogListener(ILogListener)
-	 */
-	public static void addLogListener(ILogListener listener) {
-		synchronized (logListeners) {
-			// replace if already exists (Set behaviour but we use an array
-			// since we want to retain order)
-			logListeners.remove(listener);
-			logListeners.add(listener);
-		}
-	}
-
-	/**
-	 * @see Platform#removeLogListener(ILogListener)
-	 */
-	public static void removeLogListener(ILogListener listener) {
-		synchronized (logListeners) {
-			logListeners.remove(listener);
-		}
-	}
-
-	/**
-	 * Checks if the given listener is present
-	 */
-	public static boolean contains(ILogListener listener) {
-		synchronized (logListeners) {
-			return logListeners.contains(listener);
-		}
-	}
-
-	/**
-	 * Notifies all listeners of the platform log.
-	 */
-	public static void log(final IStatus status) {
-		// create array to avoid concurrent access
-		ILogListener[] listeners;
-		synchronized (logListeners) {
-			listeners = (ILogListener[]) logListeners.toArray(new ILogListener[logListeners.size()]);
-		}
-		for (int i = 0; i < listeners.length; i++) {
-			try {
-				listeners[i].logging(status, IRuntimeConstants.PI_RUNTIME);
-			} catch (Exception e) {
-				handleException(e);
-			} catch (LinkageError e) {
-				handleException(e);
-			}
-		}
-	}
-
-	private static void handleException(Throwable e) {
-		if (!(e instanceof OperationCanceledException)) {
-			// Got a error while logging. Don't try to log again, just put it into stderr 
-			e.printStackTrace();
-		}
-	}
-
-	/**
-	 * Helps determine if any listeners are registered with the logging mechanism.
-	 * @return true if no listeners are registered
-	 */
-	public static boolean isEmpty() {
-		synchronized (logListeners) {
-			return (logListeners.size() == 0);
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/commonMessages.properties b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/commonMessages.properties
deleted file mode 100644
index 61c1a81..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/commonMessages.properties
+++ /dev/null
@@ -1,42 +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
-###############################################################################
-### Common runtime plugin messages
-
-ok = OK
-
-### metadata
-meta_couldNotCreate = Error trying to create the platform metadata area: {0}.
-meta_instanceDataUnspecified = The instance data location has not been specified yet.
-meta_noDataModeSpecified = No instance data can be specified.
-meta_notDir = Specified platform location \"{0}\" is not a directory.
-meta_readonly = The platform metadata area could not be written: {0}.  By default the platform writes its content\nunder the current working directory when the platform is launched.  Use the -data parameter to\nspecify a different content area for the platform.
-meta_pluginProblems = Problems occurred when invoking code from plug-in: \"{0}\".
-
-### parsing/resolve
-parse_doubleSeparatorVersion=Plug-in version identifier, \"{0}\", must not contain two consecutive separator characters.
-parse_emptyPluginVersion=A plug-in version identifier must be non-empty.
-parse_fourElementPluginVersion=Plug-in version identifier, \"{0}\", can contain a maximum of four components.
-parse_numericMajorComponent=The major (1st) component of plug-in version identifier, \"{0}\", must be numeric.
-parse_numericMinorComponent=The minor (2nd) component of plug-in version identifier, \"{0}\", must be numeric.
-parse_numericServiceComponent=The service (3rd) component of plug-in version identifier, \"{0}\", must be numeric.
-parse_oneElementPluginVersion=Plug-in version identifier, \"{0}\", must contain at least one component.
-parse_postiveMajor=Plug-in version identifier, \"{0}\", must have a positive major (1st) component.
-parse_postiveMinor=Plug-in version identifier, \"{0}\", must have a positive minor (2nd) component.
-parse_postiveService=Plug-in version identifier, \"{0}\", must have a positive service (3rd) component.
-parse_separatorEndVersion=Plug-in version identifier, \"{0}\", must not end with a separator character.
-parse_separatorStartVersion=Plug-in version identifier, \"{0}\", must not start with a separator character.
-
-#FileMananger messages
-fileManager_cannotLock = Unable to create lock manager.
-fileManager_couldNotSave = Could not save file table.
-fileManager_updateFailed = File update failed on one or more files.
-fileManager_illegalInReadOnlyMode = Cannot perform operation while in read-only mode.
-fileManager_notOpen = Manager is not opened.
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/package.html b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/package.html
deleted file mode 100644
index 0898ea2..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/package.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Provides core support for the runtime.
-<h2>
-Package Specification</h2>
-This package contains some classes that require OSGi presence. If OSGi plugin is not present in
-the platform, class loader errors will be raised if those classes get activated. The classes are:
-<UL>
-<LI>FindSupport
-<LI>DataArea
-<LI>MetaDataKeeper
-<LI>ResourceTranslator
-<LI>CommonRuntimeBundle
-<LI>CommonOSGiUtils
-</UL>
-
-
-</body>
-</html>
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/Assert.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/Assert.java
deleted file mode 100644
index 1ecef96..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/Assert.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-/**
- * <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.equinox.common/src/org/eclipse/core/runtime/AssertionFailedException.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/AssertionFailedException.java
deleted file mode 100644
index 8f3cbcb..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/AssertionFailedException.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-/**
- * <code>AssertionFailedException</code> is a runtime exception thrown
- * by some of the methods in <code>Assert</code>.
- */
-public class AssertionFailedException extends RuntimeException {
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/** Constructs a new exception with the given message.
-	 */
-	public AssertionFailedException(String detail) {
-		super(detail);
-	}
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/BundleFinder.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/BundleFinder.java
deleted file mode 100644
index daf4c50..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/BundleFinder.java
+++ /dev/null
@@ -1,179 +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.runtime;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Map;
-import org.osgi.framework.Bundle;
-
-/**
- * This class contains collection of helper methods aimed at finding files in bundles.
- * This class can only be used if OSGi plugin is available.
- * <p>
- * The class is not intended to be subclassed or instantiated by clients.
- * </p>
- * @since 3.2
- * @deprecated clients should use {@link FileLocator} instead. This class will
- * 	be removed before the 3.2 release (in the next week!).
- */
-public final class BundleFinder {
-
-	/**
-	 * Returns a URL for the given path in the given bundle.  Returns <code>null</code> if the URL
-	 * could not be computed or created.
-	 * 
-	 * @param bundle the bundle in which to search
-	 * @param path path relative to plug-in installation location 
-	 * @return a URL for the given path or <code>null</code>.  The actual form
-	 * of the returned URL is not specified.
-	 * @see #find(Bundle, IPath, Map)
-	 * @deprecated use {@link FileLocator#find(Bundle, IPath, Map)}
-	 */
-	public static URL find(Bundle bundle, IPath path) {
-		return FileLocator.find(bundle, path, null);
-	}
-
-	/**
-	 * Returns a URL for the given path in the given bundle.  Returns <code>null</code> if the URL
-	 * could not be computed or created.
-	 * <p>
-	 * find looks for this path in given bundle and any attached fragments.  
-	 * <code>null</code> is returned if no such entry is found.  Note that
-	 * there is no specific order to the fragments.
-	 * </p><p>
-	 * The following arguments may also be used
-	 * <pre>
-	 *     $nl$ - for language specific information
-	 *     $os$ - for operating system specific information
-	 *     $ws$ - for windowing system specific information
-	 * </pre>
-	 * </p><p>
-	 * A path of $nl$/about.properties in an environment with a default 
-	 * locale of en_CA will return a URL corresponding to the first place
-	 * about.properties is found according to the following order:
-	 * <pre>
-	 *     plugin root/nl/en/CA/about.properties
-	 *     fragment1 root/nl/en/CA/about.properties
-	 *     fragment2 root/nl/en/CA/about.properties
-	 *     ...
-	 *     plugin root/nl/en/about.properties
-	 *     fragment1 root/nl/en/about.properties
-	 *     fragment2 root/nl/en/about.properties
-	 *     ...
-	 *     plugin root/about.properties
-	 *     fragment1 root/about.properties
-	 *     fragment2 root/about.properties
-	 *     ...
-	 * </pre>
-	 * </p><p>
-	 * The current environment variable values can be overridden using 
-	 * the override map argument or <code>null</code> can be specified
-	 * if this is not desired.
-	 * </p>
-	 * 
-	 * @param bundle the bundle in which to search
-	 * @param path file path relative to plug-in installation location
-	 * @param override map of override substitution arguments to be used for
-	 * any $arg$ path elements. The map keys correspond to the substitution
-	 * arguments (eg. "$nl$" or "$os$"). The resulting
-	 * values must be of type java.lang.String. If the map is <code>null</code>,
-	 * or does not contain the required substitution argument, the default
-	 * is used.
-	 * @return a URL for the given path or <code>null</code>.  The actual form
-	 * of the returned URL is not specified.
-	 * @deprecated use {@link FileLocator#find(Bundle, IPath, Map)}
-	 */
-	public static URL find(Bundle bundle, IPath path, Map override) {
-		return FileLocator.find(bundle, path, override);
-	}
-
-	/**
-	 * Returns an input stream for the specified file. The file path
-	 * must be specified relative to this plug-in's installation location.
-	 * Optionally, the platform searches for the correct localized version
-	 * of the specified file using the users current locale, and Java
-	 * naming convention for localized resource files (locale suffix appended 
-	 * to the specified file extension).
-	 * <p>
-	 * The caller must close the returned stream when done.
-	 * </p>
-	 *
-	 * @param bundle the bundle in which to search
-	 * @param file path relative to plug-in installation location
-	 * @param localized <code>true</code> for the localized version
-	 *   of the file, and <code>false</code> for the file exactly
-	 *   as specified
-	 * @return an input stream
-	 * @exception IOException if the given path cannot be found in this plug-in
-	 * @deprecated use {@link FileLocator#openStream(Bundle, IPath, boolean)}
-	 */
-	public static InputStream openStream(Bundle bundle, IPath file, boolean localized) throws IOException {
-		return FileLocator.openStream(bundle, file, localized);
-	}
-
-	/**
-	 * Returns an input stream for the specified file. The file path
-	 * must be specified relative this the plug-in's installation location.
-	 *
-	 * @param bundle the bundle in which to search
-	 * @param file path relative to plug-in installation location
-	 * @return an input stream
-	 * @exception IOException if the given path cannot be found in this plug-in
-	 * 
-	 * @see #openStream(Bundle,IPath,boolean)
-	 * @deprecated use {@link FileLocator#openStream(Bundle, IPath, boolean)}
-	 */
-	public static final InputStream openStream(Bundle bundle, IPath file) throws IOException {
-		return FileLocator.openStream(bundle, file, false);
-	}
-
-	/**
-	 * Converts a URL that uses a user-defined protocol into a URL that uses the file
-	 * protocol. The contents of the URL may be extracted into a cache on the file-system
-	 * in order to get a file URL. 
-	 * <p>
-	 * If the protocol for the given URL is not recognized by this converter, the original
-	 * URL is returned as-is.
-	 * </p>
-	 * @param url the original URL
-	 * @return the converted file URL or the original URL passed in if it is 
-	 * 	not recognized by this converter
-	 * @throws IOException if an error occurs during the conversion
-	 * @deprecated use {@link FileLocator#toFileURL(URL)}
-	 */
-	public static URL toFileURL(URL url) throws IOException {
-		return FileLocator.toFileURL(url);
-	}
-
-	/**
-	 * Converts a URL that uses a client-defined protocol into a URL that uses a
-	 * protocol which is native to the Java class library (file, jar, http, etc).
-	 * <p>
-	 * Note however that users of this API should not assume too much about the
-	 * results of this method.  While it may consistently return a file: URL in certain
-	 * installation configurations, others may result in jar: or http: URLs.
-	 * </p>
-	 * <p>
-	 * If the protocol is not reconized by this converter, then the original URL is
-	 * returned as-is.
-	 * </p>
-	 * @param url the original URL
-	 * @return the resolved URL or the original if the protocol is unknown to this converter
-	 * @exception IOException if unable to resolve URL
-	 * @throws IOException if an error occurs during the resolution
-	 * @deprecated use {@link FileLocator#resolve(URL)}
-	 */
-	public static URL resolve(URL url) throws IOException {
-		return FileLocator.resolve(url);
-	}
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/CoreException.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/CoreException.java
deleted file mode 100644
index 9ac5b61..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/CoreException.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.runtime;
-
-import java.io.PrintStream;
-import java.io.PrintWriter;
-
-/**
- * A checked exception representing a failure.
- * <p>
- * Core exceptions contain a status object describing the 
- * cause of the exception.
- * </p>
- *
- * @see IStatus
- */
-public class CoreException extends Exception {
-
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/** Status object. */
-	private IStatus status;
-
-	/**
-	 * Creates a new exception with the given status object.  The message
-	 * of the given status is used as the exception message.
-	 *
-	 * @param status the status object to be associated with this exception
-	 */
-	public CoreException(IStatus status) {
-		super(status.getMessage());
-		this.status = status;
-	}
-
-	/**
-	 * Returns the status object for this exception.
-	 *
-	 * @return a status object
-	 */
-	public final IStatus getStatus() {
-		return status;
-	}
-
-	/**
-	 * Prints a stack trace out for the exception, and
-	 * any nested exception that it may have embedded in
-	 * its Status object.
-	 */
-	public void printStackTrace() {
-		printStackTrace(System.err);
-	}
-
-	/**
-	 * Prints a stack trace out for the exception, and
-	 * any nested exception that it may have embedded in
-	 * its Status object.
-	 * 
-	 * @param output the stream to write to
-	 */
-	public void printStackTrace(PrintStream output) {
-		synchronized (output) {
-			if (status.getException() != null) {
-				output.print(getClass().getName() + "[" + status.getCode() + "]: "); //$NON-NLS-1$ //$NON-NLS-2$
-				status.getException().printStackTrace(output);
-			} else
-				super.printStackTrace(output);
-		}
-	}
-
-	/**
-	 * Prints a stack trace out for the exception, and
-	 * any nested exception that it may have embedded in
-	 * its Status object.
-	 * 
-	 * @param output the stream to write to
-	 */
-	public void printStackTrace(PrintWriter output) {
-		synchronized (output) {
-			if (status.getException() != null) {
-				output.print(getClass().getName() + "[" + status.getCode() + "]: "); //$NON-NLS-1$ //$NON-NLS-2$
-				status.getException().printStackTrace(output);
-			} else
-				super.printStackTrace(output);
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/FileLocator.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/FileLocator.java
deleted file mode 100644
index de65840..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/FileLocator.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Map;
-import org.eclipse.core.internal.runtime.*;
-import org.eclipse.osgi.service.urlconversion.URLConverter;
-import org.osgi.framework.Bundle;
-
-/**
- * This class contains collection of helper methods aimed at finding files in bundles.
- * This class can only be used if OSGi plugin is available.
- * <p>
- * The class is not intended to be subclassed or instantiated by clients.
- * </p>
- * @since 3.2
- */
-public final class FileLocator {
-
-	/**
-	 * Returns a URL for the given path in the given bundle.  Returns <code>null</code> if the URL
-	 * could not be computed or created. 
-	 * <p>
-	 * find looks for this path in given bundle and any attached fragments.  
-	 * <code>null</code> is returned if no such entry is found.  Note that
-	 * there is no specific order to the fragments.
-	 * </p><p>
-	 * The following arguments may also be used
-	 * <pre>
-	 *     $nl$ - for language specific information
-	 *     $os$ - for operating system specific information
-	 *     $ws$ - for windowing system specific information
-	 * </pre>
-	 * </p><p>
-	 * A path of $nl$/about.properties in an environment with a default 
-	 * locale of en_CA will return a URL corresponding to the first place
-	 * about.properties is found according to the following order:
-	 * <pre>
-	 *     plugin root/nl/en/CA/about.properties
-	 *     fragment1 root/nl/en/CA/about.properties
-	 *     fragment2 root/nl/en/CA/about.properties
-	 *     ...
-	 *     plugin root/nl/en/about.properties
-	 *     fragment1 root/nl/en/about.properties
-	 *     fragment2 root/nl/en/about.properties
-	 *     ...
-	 *     plugin root/about.properties
-	 *     fragment1 root/about.properties
-	 *     fragment2 root/about.properties
-	 *     ...
-	 * </pre>
-	 * </p><p>
-	 * The current environment variable values can be overridden using 
-	 * the override map argument or <code>null</code> can be specified
-	 * if this is not desired.
-	 * </p>
-	 * 
-	 * @param bundle the bundle in which to search
-	 * @param path file path relative to plug-in installation location
-	 * @param override map of override substitution arguments to be used for
-	 * any $arg$ path elements. The map keys correspond to the substitution
-	 * arguments (eg. "$nl$" or "$os$"). The resulting
-	 * values must be of type java.lang.String. If the map is <code>null</code>,
-	 * or does not contain the required substitution argument, the default
-	 * is used.
-	 * @return a URL for the given path or <code>null</code>.  The actual form
-	 * of the returned URL is not specified.
-	 */
-	public static URL find(Bundle bundle, IPath path, Map override) {
-		return FindSupport.find(bundle, path, override);
-	}
-
-	/**
-	 * Returns an input stream for the specified file. The file path
-	 * must be specified relative to this plug-in's installation location.
-	 * Optionally, the platform searches for the correct localized version
-	 * of the specified file using the users current locale, and Java
-	 * naming convention for localized resource files (locale suffix appended 
-	 * to the specified file extension).
-	 * <p>
-	 * The caller must close the returned stream when done.
-	 * </p>
-	 *
-	 * @param bundle the bundle in which to search
-	 * @param file path relative to plug-in installation location
-	 * @param localized <code>true</code> for the localized version
-	 *   of the file, and <code>false</code> for the file exactly
-	 *   as specified
-	 * @return an input stream
-	 * @exception IOException if the given path cannot be found in this plug-in
-	 */
-	public static InputStream openStream(Bundle bundle, IPath file, boolean localized) throws IOException {
-		return FindSupport.openStream(bundle, file, localized);
-	}
-
-	/**
-	 * Converts a URL that uses a user-defined protocol into a URL that uses the file
-	 * protocol. The contents of the URL may be extracted into a cache on the file-system
-	 * in order to get a file URL. 
-	 * <p>
-	 * If the protocol for the given URL is not recognized by this converter, the original
-	 * URL is returned as-is.
-	 * </p>
-	 * @param url the original URL
-	 * @return the converted file URL or the original URL passed in if it is 
-	 * 	not recognized by this converter
-	 * @throws IOException if an error occurs during the conversion
-	 */
-	public static URL toFileURL(URL url) throws IOException {
-		URLConverter converter = Activator.getURLConverter(url);
-		return converter == null ? url : converter.toFileURL(url);
-	}
-
-	/**
-	 * Converts a URL that uses a client-defined protocol into a URL that uses a
-	 * protocol which is native to the Java class library (file, jar, http, etc).
-	 * <p>
-	 * Note however that users of this API should not assume too much about the
-	 * results of this method.  While it may consistently return a file: URL in certain
-	 * installation configurations, others may result in jar: or http: URLs.
-	 * </p>
-	 * <p>
-	 * If the protocol is not reconized by this converter, then the original URL is
-	 * returned as-is.
-	 * </p>
-	 * @param url the original URL
-	 * @return the resolved URL or the original if the protocol is unknown to this converter
-	 * @exception IOException if unable to resolve URL
-	 * @throws IOException if an error occurs during the resolution
-	 */
-	public static URL resolve(URL url) throws IOException {
-		URLConverter converter = Activator.getURLConverter(url);
-		return converter == null ? url : converter.resolve(url);
-	}
-
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IAdaptable.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IAdaptable.java
deleted file mode 100644
index a935fad..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IAdaptable.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-/**
- * An interface for an adaptable object.
- * <p>
- * Adaptable objects can be dynamically extended to provide different 
- * interfaces (or "adapters").  Adapters are created by adapter 
- * factories, which are in turn managed by type by adapter managers.
- * </p>
- * For example,
- * <pre>
- *     IAdaptable a = [some adaptable];
- *     IFoo x = (IFoo)a.getAdapter(IFoo.class);
- *     if (x != null)
- *         [do IFoo things with x]
- * </pre>
- * <p>
- * Clients may implement this interface, or obtain a default implementation
- * of this interface by subclassing <code>PlatformObject</code>.
- * </p>
- * @see IAdapterFactory
- * @see IAdapterManager
- * @see PlatformObject
- */
-public interface IAdaptable {
-	/**
-	 * Returns an object which is an instance of the given class
-	 * associated with this object. Returns <code>null</code> if
-	 * no such object can be found.
-	 *
-	 * @param adapter the adapter class to look up
-	 * @return a object castable to the given class, 
-	 *    or <code>null</code> if this object does not
-	 *    have an adapter for the given class
-	 */
-	public Object getAdapter(Class adapter);
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IAdapterFactory.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IAdapterFactory.java
deleted file mode 100644
index 994eaae..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IAdapterFactory.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.runtime;
-
-/**
- * An adapter factory defines behavioral extensions for
- * one or more classes that implements the <code>IAdaptable</code>
- * interface. Adapter factories are registered with an
- * adapter manager.
- * <p>
- * Clients may implement this interface.
- * </p>
- *
- * @see IAdapterManager
- * @see IAdaptable
- */
-public interface IAdapterFactory {
-	/**
-	 * Returns an object which is an instance of the given class
-	 * associated with the given object. Returns <code>null</code> if
-	 * no such object can be found.
-	 *
-	 * @param adaptableObject the adaptable object being queried
-	 *   (usually an instance of <code>IAdaptable</code>)
-	 * @param adapterType the type of adapter to look up
-	 * @return a object castable to the given adapter type, 
-	 *    or <code>null</code> if this adapter factory 
-	 *    does not have an adapter of the given type for the
-	 *    given object
-	 */
-	public Object getAdapter(Object adaptableObject, Class adapterType);
-
-	/**
-	 * Returns the collection of adapter types handled by this
-	 * factory.
-	 * <p>
-	 * This method is generally used by an adapter manager
-	 * to discover which adapter types are supported, in advance
-	 * of dispatching any actual <code>getAdapter</code> requests.
-	 * </p>
-	 *
-	 * @return the collection of adapter types
-	 */
-	public Class[] getAdapterList();
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IAdapterManager.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IAdapterManager.java
deleted file mode 100644
index bc0b8ab..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IAdapterManager.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-
-/**
- * An adapter manager maintains a registry of adapter factories. Clients
- * directly invoke methods on an adapter manager to register and unregister
- * adapters. All adaptable objects (that is, objects that implement the <code>IAdaptable</code>
- * interface) funnel <code>IAdaptable.getAdapter</code> invocations to their
- * adapter manager's <code>IAdapterManger.getAdapter</code> method. The
- * adapter manager then forwards this request unmodified to the <code>IAdapterFactory.getAdapter</code>
- * method on one of the registered adapter factories.
- * <p>
- * Adapter factories can be registered programmatically using the <code>registerAdapters</code>
- * method.  Alternatively, they can be registered declaratively using the 
- * <code>org.eclipse.core.runtime.adapters</code> extension point.  Factories registered
- * with this extension point will not be able to provide adapters until their
- * corresponding plugin has been activated.
- * <p>
- * The following code snippet shows how one might register an adapter of type
- * <code>com.example.acme.Sticky</code> on resources in the workspace.
- * <p>
- * 
- * <pre>
- *  IAdapterFactory pr = new IAdapterFactory() {
- *  	public Class[] getAdapterList() {
- *  		return new Class[] { com.example.acme.Sticky.class };
- *  	}
- *  	public Object getAdapter(Object adaptableObject, Class adapterType) {
- *  		IResource res = (IResource) adaptableObject;
- *  		QualifiedName key = new QualifiedName(&quot;com.example.acme&quot;, &quot;sticky-note&quot;);
- *  		try {
- *  			com.example.acme.Sticky v = (com.example.acme.Sticky) res.getSessionProperty(key);
- *  			if (v == null) {
- *  				v = new com.example.acme.Sticky();
- *  				res.setSessionProperty(key, v);
- *  			}
- *  		} catch (CoreException e) {
- *  			// unable to access session property - ignore
- *  		}
- *  		return v;
- *  	}
- *  }
- *  Platform.getAdapterManager().registerAdapters(pr, IResource.class);
- *   </pre>
- * 
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @see IAdaptable
- * @see IAdapterFactory
- * XXX Needs to put @since
- */
-public interface IAdapterManager {
-
-	/**
-	 * Returns the types that can be obtained by converting <code>adaptableClass</code> 
-	 * via this manager. Converting means that subsequent calls to <code>getAdapter()</code>
-	 * or <code>loadAdapter()</code> could result in an adapted object.
-	 * <p>
-	 * Note that the returned types do not guarantee that
-	 * a subsequent call to <code>getAdapter</code> with the same type as an argument
-	 * will return a non-null result. If the factory's plug-in has not yet been
-	 * loaded, or if the factory itself returns <code>null</code>, then
-	 * <code>getAdapter</code> will still return <code>null</code>.
-	 * </p>
-	 * @param adaptableClass the adaptable class being queried	
-	 * @return an array of type names that can be obtained by converting 
-	 * <code>adaptableClass</code> via this manager. An empty array 
-	 * is returned if there are none.
-	 * @since 3.1
-	 */
-	public String[] computeAdapterTypes(Class adaptableClass);
-	
-	/**
-	 * Returns the class search order for a given class. The search order from a 
-	 * class with the definition <br>
-	 * <code>class X extends Y implements A, B</code><br>
-	 * is as follows:
-	 * <ul>
-	 * <li>the target's class: X
-	 * <li>X's superclasses in order to <code>Object</code>
-	 * <li>a breadth-first traversal of the target class's interfaces in the
-	 * order returned by <code>getInterfaces</code> (in the example, A and its
-	 * superinterfaces then B and its superinterfaces) </il>
-	 * </ul>
-	 * 
-	 * @param clazz the class for which to return the class order. 
-	 * @return the class search order for the given class. The returned
-	 * search order will minimally  contain the target class.
-	 * @since 3.1
-	 */
-	public Class[] computeClassOrder(Class clazz);
-	/**
-	 * Returns an object which is an instance of the given class associated
-	 * with the given object. Returns <code>null</code> if no such object can
-	 * be found.
-	 * <p>
-	 * Note that this method will never cause plug-ins to be loaded. If the
-	 * only suitable factory is not yet loaded, this method will return <code>null</code>.
-	 * 
-	 * @param adaptable the adaptable object being queried (usually an instance
-	 * of <code>IAdaptable</code>)
-	 * @param adapterType the type of adapter to look up
-	 * @return an object castable to the given adapter type, or <code>null</code>
-	 * if the given adaptable object does not have an available adapter of the
-	 * given type
-	 */
-	public Object getAdapter(Object adaptable, Class adapterType);
-
-	/**
-	 * Returns an object which is an instance of the given class name associated
-	 * with the given object. Returns <code>null</code> if no such object can
-	 * be found.
-	 * <p>
-	 * Note that this method will never cause plug-ins to be loaded. If the
-	 * only suitable factory is not yet loaded, this method will return <code>null</code>.
-	 * If activation of the plug-in providing the factory is required, use the
-	 * <code>loadAdapter</code> method instead.
-	 * 
-	 * @param adaptable the adaptable object being queried (usually an instance
-	 * of <code>IAdaptable</code>)
-	 * @param adapterTypeName the fully qualified name of the type of adapter to look up
-	 * @return an object castable to the given adapter type, or <code>null</code>
-	 * if the given adaptable object does not have an available adapter of the
-	 * given type
-	 * @since 3.0
-	 */
-	public Object getAdapter(Object adaptable, String adapterTypeName);
-
-	/**
-	 * Returns whether there is an adapter factory registered that may be able
-	 * to convert <code>adaptable</code> to an object of type <code>adapterTypeName</code>.
-	 * <p>
-	 * Note that a return value of <code>true</code> does not guarantee that
-	 * a subsequent call to <code>getAdapter</code> with the same arguments
-	 * will return a non-null result. If the factory's plug-in has not yet been
-	 * loaded, or if the factory itself returns <code>null</code>, then
-	 * <code>getAdapter</code> will still return <code>null</code>.
-	 * 
-	 * @param adaptable the adaptable object being queried (usually an instance
-	 * of <code>IAdaptable</code>)
-	 * @param adapterTypeName the fully qualified class name of an adapter to
-	 * look up
-	 * @return <code>true</code> if there is an adapter factory that claims
-	 * it can convert <code>adaptable</code> to an object of type <code>adapterType</code>,
-	 * and <code>false</code> otherwise.
-	 * @since 3.0
-	 */
-	public boolean hasAdapter(Object adaptable, String adapterTypeName);
-	
-	/**
-	 * Returns an object that is an instance of the given class name associated
-	 * with the given object. Returns <code>null</code> if no such object can
-	 * be found.
-	 * <p>
-	 * Note that unlike the <code>getAdapter</code> methods, this method
-	 * will cause the plug-in that contributes the adapter factory to be loaded
-	 * if necessary. As such, this method should be used judiciously, in order
-	 * to avoid unnecessary plug-in activations. Most clients should avoid
-	 * activation by using <code>getAdapter</code> instead.
-	 * 
-	 * @param adaptable the adaptable object being queried (usually an instance
-	 * of <code>IAdaptable</code>)
-	 * @param adapterTypeName the fully qualified name of the type of adapter to look up
-	 * @return an object castable to the given adapter type, or <code>null</code>
-	 * if the given adaptable object does not have an available adapter of the
-	 * given type
-	 * @since 3.0
-	 */
-	public Object loadAdapter(Object adaptable, String adapterTypeName);
-
-	/**
-	 * Registers the given adapter factory as extending objects of the given
-	 * type.
-	 * <p>
-	 * If the type being extended is a class, the given factory's adapters are
-	 * available on instances of that class and any of its subclasses. If it is
-	 * an interface, the adapters are available to all classes that directly or
-	 * indirectly implement that interface.
-	 * </p>
-	 * 
-	 * @param factory the adapter factory
-	 * @param adaptable the type being extended
-	 * @see #unregisterAdapters(IAdapterFactory)
-	 * @see #unregisterAdapters(IAdapterFactory, Class)
-	 */
-	public void registerAdapters(IAdapterFactory factory, Class adaptable);
-
-	/**
-	 * Removes the given adapter factory completely from the list of registered
-	 * factories. Equivalent to calling <code>unregisterAdapters(IAdapterFactory,Class)</code>
-	 * on all classes against which it had been explicitly registered. Does
-	 * nothing if the given factory is not currently registered.
-	 * 
-	 * @param factory the adapter factory to remove
-	 * @see #registerAdapters(IAdapterFactory, Class)
-	 */
-	public void unregisterAdapters(IAdapterFactory factory);
-
-	/**
-	 * Removes the given adapter factory from the list of factories registered
-	 * as extending the given class. Does nothing if the given factory and type
-	 * combination is not registered.
-	 * 
-	 * @param factory the adapter factory to remove
-	 * @param adaptable one of the types against which the given factory is
-	 * registered
-	 * @see #registerAdapters(IAdapterFactory, Class)
-	 */
-	public void unregisterAdapters(IAdapterFactory factory, Class adaptable);
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IBundleGroup.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IBundleGroup.java
deleted file mode 100644
index 3f53394..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IBundleGroup.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-import org.osgi.framework.Bundle;
-
-/**
- * Bundle groups represent a logical collection of plug-ins (aka bundles).  Bundle
- * groups do not contain their constituents but rather collect them together under
- * a common label.  The main role of a bundle group is to report to the system
- * (e.g., the About dialog) what bundles have been installed.  They are not intended
- * for use in managing the set of bundles they represent.
- * <p>
- * Since the bulk of the branding related information is specific to the consumer, 
- * bundle groups also carry an arbitrary set of properties.  The valid set of 
- * key-value pairs and their interpretation defined by the consumer in the 
- * target environment.
- * </p><p>
- * The Eclipse UI is the typical consumer of bundle groups and defines various 
- * property keys that it will use, for example, to display About information.  See
- * <code>org.eclipse.ui.branding.IBundleGroupConstants</code>.
- * </p>
- * @see IBundleGroupProvider
- * @since 3.0
- */
-public interface IBundleGroup {
-
-	/**
-	 * Returns the identifier of this bundle group.  Bundle groups are uniquely identified by the combination of
-	 * their identifier and their version.
-	 * 
-	 * @see #getVersion()
-	 * @return the identifier for this bundle group
-	 */
-	public String getIdentifier();
-
-	/**
-	 * Returns the human-readable name of this bundle group.
-	 * 
-	 * @return the human-readable name
-	 */
-	public String getName();
-
-	/**
-	 * Returns the version of this bundle group. Bundle group version strings have the same format as 
-	 * bundle versions (i.e., major.minor.service.qualifier).  Bundle groups are uniquely identified 
-	 * by the combination of their identifier and their version.
-	 * 
-	 * @see #getIdentifier()
-	 * @return the string form of this bundle group's version
-	 */
-	public String getVersion();
-
-	/**
-	 * Returns a text description of this bundle group.
-	 * 
-	 * @return text description of this bundle group
-	 */
-	public String getDescription();
-
-	/**
-	 * Returns the name of the provider of this bundle group.
-	 * 
-	 * @return the name of the provider or <code>null</code> if none
-	 */
-	public String getProviderName();
-
-	/**
-	 * Returns a list of all bundles supplied by this bundle group.  
-	 * 
-	 * @return the bundles supplied by this bundle group
-	 */
-	public Bundle[] getBundles();
-
-	/**
-	 * Returns the property of this bundle group with the given key.
-	 * <code>null</code> is returned if there is no such key/value pair.
-	 * 
-	 * @param key the name of the property to return
-	 * @return the value associated with the given key or <code>null</code> if none
-	 */
-	public String getProperty(String key);
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IBundleGroupProvider.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IBundleGroupProvider.java
deleted file mode 100644
index dad6eb5..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IBundleGroupProvider.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-/**
- * Bundle group providers define groups of plug-ins which have been installed in
- * the current system.  Typically, a configuration agent (i.e., plug-in installer) will 
- * define a bundle group provider so that it can report to the system the list 
- * of plug-ins it has installed.
- * 
- * @see IBundleGroup
- * @since 3.0
- */
-public interface IBundleGroupProvider {
-
-	/**
-	 * Returns the human-readable name of this bundle group provider.
-	 * 
-	 * @return the name of this bundle group provider
-	 */
-	public String getName();
-
-	/**
-	 * Returns the bundle groups provided by this provider.
-	 * 
-	 * @return the bundle groups provided by this provider
-	 */
-	public IBundleGroup[] getBundleGroups();
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/ILogListener.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/ILogListener.java
deleted file mode 100644
index b8c4548..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/ILogListener.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-import java.util.EventListener;
-
-/**
- * A log listener is notified of entries added to a plug-in's log.
- * <p>
- * Clients may implement this interface.
- * </p>
- *
- * @see ILog#addLogListener(ILogListener)
- * @see Platform#addLogListener(ILogListener)
- */
-public interface ILogListener extends EventListener {
-	/**
-	 * Notifies this listener that given status has been logged by
-	 * a plug-in.  The listener is free to retain or ignore this status.
-	 * 
-	 * @param status the status being logged
-	 * @param plugin the plugin of the log which generated this event
-	 */
-	public void logging(IStatus status, String plugin);
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IPath.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IPath.java
deleted file mode 100644
index d9eb8ca..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IPath.java
+++ /dev/null
@@ -1,504 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-/**
- * A path is an ordered collection of string segments,
- * separated by a standard separator character, "/".
- * A path may also have a leading and/or a trailing separator.
- * Paths may also be prefixed by an optional device id, which includes
- * the character(s) which separate the device id from the rest 
- * of the path. For example, "C:" and "Server/Volume:" are typical
- * device ids.
- * A device independent path has <code>null</code> for a device id.
- * <p>
- * Note that paths are value objects; all operations on paths 
- * return a new path; the path that is operated on is unscathed.
- * </p>
- * <p>
- * UNC paths are denoted by leading double-slashes such 
- * as <code>//Server/Volume/My/Path</code>. When a new path
- * is constructed all double-slashes are removed except those
- * appearing at the beginning of the path.
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @see Path
- */
-public interface IPath extends Cloneable {
-
-	/**
-	 * Path separator character constant "/" used in paths.
-	 */
-	public static final char SEPARATOR = '/';
-
-	/** 
-	 * Device separator character constant ":" used in paths.
-	 */
-	public static final char DEVICE_SEPARATOR = ':';
-
-	/**
-	 * Returns a new path which is the same as this path but with
-	 * the given file extension added.  If this path is empty, root or has a 
-	 * trailing separator, this path is returned.  If this path already
-	 * has an extension, the existing extension is left and the given
-	 * extension simply appended.  Clients wishing to replace
-	 * the current extension should first remove the extension and
-	 * then add the desired one.
-	 * <p>
-	 * The file extension portion is defined as the string
-	 * following the last period (".") character in the last segment.
-	 * The given extension should not include a leading ".".
-	 * </p>
-	 *
-	 * @param extension the file extension to append
-	 * @return the new path
-	 */
-	public IPath addFileExtension(String extension);
-
-	/**
-	 * Returns a path with the same segments as this path
-	 * but with a trailing separator added.
-	 * This path must have at least one segment.
-	 * <p>
-	 * If this path already has a trailing separator,
-	 * this path is returned.
-	 * </p>
-	 *
-	 * @return the new path
-	 * @see #hasTrailingSeparator()
-	 * @see #removeTrailingSeparator()
-	 */
-	public IPath addTrailingSeparator();
-
-	/**
-	 * Returns the canonicalized path obtained from the
-	 * concatenation of the given string path to the
-	 * end of this path. The given string path must be a valid
-	 * path. If it has a trailing separator, 
-	 * the result will have a trailing separator.
-	 * The device id of this path is preserved (the one
-	 * of the given string is ignored). Duplicate slashes
-	 * are removed from the path except at the beginning
-	 * where the path is considered to be UNC.
-	 * 
-	 * @param path the string path to concatenate
-	 * @return the new path
-	 * @see #isValidPath(String)
-	 */
-	public IPath append(String path);
-
-	/**
-	 * Returns the canonicalized path obtained from the 
-	 * concatenation of the given path's segments to the
-	 * end of this path.  If the given path has a trailing
-	 * separator, the result will have a trailing separator.
-	 * The device id of this path is preserved (the one
-	 * of the given path is ignored). Duplicate slashes
-	 * are removed from the path except at the beginning
-	 * where the path is considered to be UNC.
-	 *
-	 * @param path the path to concatenate
-	 * @return the new path
-	 */
-	public IPath append(IPath path);
-
-	/**
-	 * Returns a copy of this path.
-	 *
-	 * @return the cloned path
-	 */
-	public Object clone();
-
-	/**
-	 * Returns whether this path equals the given object.
-	 * <p>
-	 * Equality for paths is defined to be: same sequence of segments,
-	 * same absolute/relative status, and same device.
-	 * Trailing separators are disregarded.
-	 * Paths are not generally considered equal to objects other than paths.
-	 * </p>
-	 *
-	 * @param obj the other object
-	 * @return <code>true</code> if the paths are equivalent,
-	 *    and <code>false</code> if they are not
-	 */
-	public boolean equals(Object obj);
-
-	/**
-	 * Returns the device id for this path, or <code>null</code> if this
-	 * path has no device id. Note that the result will end in ':'.
-	 *
-	 * @return the device id, or <code>null</code>
-	 * @see #setDevice(String)
-	 */
-	public String getDevice();
-
-	/**
-	 * Returns the file extension portion of this path, 
-	 * or <code>null</code> if there is none.
-	 * <p>
-	 * The file extension portion is defined as the string
-	 * following the last period (".") character in the last segment.
-	 * If there is no period in the last segment, the path has no
-	 * file extension portion. If the last segment ends in a period,
-	 * the file extension portion is the empty string.
-	 * </p>
-	 *
-	 * @return the file extension or <code>null</code>
-	 */
-	public String getFileExtension();
-
-	/**
-	 * Returns whether this path has a trailing separator.
-	 * <p>
-	 * Note: In the root path ("/"), the separator is considered to
-	 * be leading rather than trailing.
-	 * </p>
-	 *
-	 * @return <code>true</code> if this path has a trailing
-	 *    separator, and <code>false</code> otherwise
-	 * @see #addTrailingSeparator()
-	 * @see #removeTrailingSeparator()
-	 */
-	public boolean hasTrailingSeparator();
-
-	/**
-	 * Returns whether this path is an absolute path (ignoring
-	 * any device id).
-	 * <p>
-	 * Absolute paths start with a path separator.
-	 * A root path, like <code>/</code> or <code>C:/</code>, 
-	 * is considered absolute.  UNC paths are always absolute.
-	 * </p>
-	 *
-	 * @return <code>true</code> if this path is an absolute path,
-	 *    and <code>false</code> otherwise
-	 */
-	public boolean isAbsolute();
-
-	/**
-	 * Returns whether this path has no segments and is not
-	 * a root path.
-	 *
-	 * @return <code>true</code> if this path is empty,
-	 *    and <code>false</code> otherwise
-	 */
-	public boolean isEmpty();
-
-	/**
-	 * Returns whether this path is a prefix of the given path.
-	 * To be a prefix, this path's segments must
-	 * appear in the argument path in the same order,
-	 * and their device ids must match.
-	 * <p>
-	 * An empty path is a prefix of all paths with the same device; a root path is a prefix of 
-	 * all absolute paths with the same device.
-	 * </p>
-	 * @param anotherPath the other path
-	 * @return <code>true</code> if this path is a prefix of the given path,
-	 *    and <code>false</code> otherwise
-	 */
-	public boolean isPrefixOf(IPath anotherPath);
-
-	/**
-	 * Returns whether this path is a root path.
-	 * <p>
-	 * The root path is the absolute non-UNC path with zero segments; 
-	 * e.g., <code>/</code> or <code>C:/</code>.
-	 * The separator is considered a leading separator, not a trailing one.
-	 * </p>
-	 *
-	 * @return <code>true</code> if this path is a root path,
-	 *    and <code>false</code> otherwise
-	 */
-	public boolean isRoot();
-
-	/**
-	 * Returns a boolean value indicating whether or not this path
-	 * is considered to be in UNC form. Return false if this path
-	 * has a device set or if the first 2 characters of the path string
-	 * are not <code>Path.SEPARATOR</code>.
-	 * 
-	 * @return boolean indicating if this path is UNC
-	 */
-	public boolean isUNC();
-
-	/**
-	 * Returns whether the given string is syntactically correct as
-	 * a path.  The device id is the prefix up to and including the device
-	 * separator for the local file system; the path proper is everything to 
-	 * the right of it, or the entire string if there is no device separator. 
-	 * When the platform location is a file system with no meaningful device
-	 * separator, the entire string is treated as the path proper.
-	 * The device id is not checked for validity; the path proper is correct 
-	* if each of the segments in its canonicalized form is valid.
-	 *
-	 * @param path the path to check
-	 * @return <code>true</code> if the given string is a valid path,
-	 *    and <code>false</code> otherwise
-	 * @see #isValidSegment(String)
-	 */
-	public boolean isValidPath(String path);
-
-	/**
-	 * Returns whether the given string is valid as a segment in 
-	 * a path. The rules for valid segments are as follows:
-	 * <ul>
-	 * <li> the empty string is not valid
-	 * <li> any string containing the slash character ('/') is not valid
-	 * <li>any string containing segment or device separator characters
-	 * on the local file system, such as the backslash ('\') and colon (':')
-	 * on some file systems.
-	 * </ul>
-	 *
-	 * @param segment the path segment to check
-	 * @return <code>true</code> if the given path segment is valid,
-	 *    and <code>false</code> otherwise
-	 */
-	public boolean isValidSegment(String segment);
-
-	/**
-	 * Returns the last segment of this path, or
-	 * <code>null</code> if it does not have any segments.
-	 *
-	 * @return the last segment of this path, or <code>null</code> 
-	 */
-	public String lastSegment();
-
-	/**
-	 * Returns an absolute path with the segments and device id of this path.
-	 * Absolute paths start with a path separator. If this path is absolute, 
-	 * it is simply returned.
-	 *
-	 * @return the new path
-	 */
-	public IPath makeAbsolute();
-
-	/**
-	 * Returns a relative path with the segments and device id of this path.
-	 * Absolute paths start with a path separator and relative paths do not. 
-	 * If this path is relative, it is simply returned.
-	 *
-	 * @return the new path
-	 */
-	public IPath makeRelative();
-
-	/**
-	 * Return a new path which is the equivalent of this path converted to UNC
-	 * form (if the given boolean is true) or this path not as a UNC path (if the given
-	 * boolean is false). If UNC, the returned path will not have a device and the 
-	 * first 2 characters of the path string will be <code>Path.SEPARATOR</code>. If not UNC, the
-	 * 	first 2 characters of the returned path string will not be <code>Path.SEPARATOR</code>.
-	 * 
-	 * @param toUNC true if converting to UNC, false otherwise
-	 * @return the new path, either in UNC form or not depending on the boolean parameter
-	 */
-	public IPath makeUNC(boolean toUNC);
-
-	/**
-	 * Returns a count of the number of segments which match in
-	 * this path and the given path (device ids are ignored),
-	 * comparing in increasing segment number order.
-	 *
-	 * @param anotherPath the other path
-	 * @return the number of matching segments
-	 */
-	public int matchingFirstSegments(IPath anotherPath);
-
-	/**
-	 * Returns a new path which is the same as this path but with
-	 * the file extension removed.  If this path does not have an 
-	 * extension, this path is returned.
-	 * <p>
-	 * The file extension portion is defined as the string
-	 * following the last period (".") character in the last segment.
-	 * If there is no period in the last segment, the path has no
-	 * file extension portion. If the last segment ends in a period,
-	 * the file extension portion is the empty string.
-	 * </p>
-	 *
-	 * @return the new path
-	 */
-	public IPath removeFileExtension();
-
-	/**
-	 * Returns a copy of this path with the given number of segments
-	 * removed from the beginning. The device id is preserved. 
-	 * The number must be greater or equal zero.
-	 * If the count is zero, this path is returned.
-	 * The resulting path will always be a relative path with respect
-	 * to this path.  If the number equals or exceeds the number
-	 * of segments in this path, an empty relative path is returned.
-	 *
-	 * @param count the number of segments to remove
-	 * @return the new path
-	 */
-	public IPath removeFirstSegments(int count);
-
-	/**
-	 * Returns a copy of this path with the given number of segments
-	 * removed from the end. The device id is preserved.
-	 * The number must be greater or equal zero.
-	 * If the count is zero, this path is returned.
-	 * <p>
-	 * If this path has a trailing separator, it will still
-	 * have a trailing separator after the last segments are removed
-	 * (assuming there are some segments left).  If there is no
-	 * trailing separator, the result will not have a trailing
-	 * separator.
-	 * If the number equals or exceeds the number
-	 * of segments in this path, an empty path is returned.
-	 * </p>
-	 *
-	 * @param count the number of segments to remove
-	 * @return the new path
-	 */
-	public IPath removeLastSegments(int count);
-
-	/**
-	 * Returns a path with the same segments as this path
-	 * but with a trailing separator removed.
-	 * Does nothing if this path does not have at least one segment.
-	 * The device id is preserved.
-	 * <p>
-	 * If this path does not have a trailing separator,
-	 * this path is returned.
-	 * </p>
-	 *
-	 * @return the new path
-	 * @see #addTrailingSeparator()
-	 * @see #hasTrailingSeparator()
-	 */
-	public IPath removeTrailingSeparator();
-
-	/**
-	 * Returns the specified segment of this path, or
-	 * <code>null</code> if the path does not have such a segment.
-	 *
-	 * @param index the 0-based segment index
-	 * @return the specified segment, or <code>null</code> 
-	 */
-	public String segment(int index);
-
-	/**
-	 * Returns the number of segments in this path.
-	 * <p> 
-	 * Note that both root and empty paths have 0 segments.
-	 * </p>
-	 *
-	 * @return the number of segments
-	 */
-	public int segmentCount();
-
-	/**
-	 * Returns the segments in this path in order.
-	 *
-	 * @return an array of string segments
-	 */
-	public String[] segments();
-
-	/**
-	 * Returns a new path which is the same as this path but with 
-	 * the given device id.  The device id must end with a ":".
-	 * A device independent path is obtained by passing <code>null</code>.
-	 * <p>
-	 * For example, "C:" and "Server/Volume:" are typical device ids.
-	 * </p>
-	 *
-	 * @param device the device id or <code>null</code>
-	 * @return a new path
-	 * @see #getDevice()
-	 */
-	public IPath setDevice(String device);
-
-	/**
-	 * Returns a <code>java.io.File</code> corresponding to this path.
-	 *
-	 * @return the file corresponding to this path
-	 */
-	public java.io.File toFile();
-
-	/**
-	 * Returns a string representation of this path which uses the
-	 * platform-dependent path separator defined by <code>java.io.File</code>.
-	 * This method is like <code>toString()</code> except that the
-	 * latter always uses the same separator (<code>/</code>) regardless of platform.
-	 * <p>
-	 * This string is suitable for passing to <code>java.io.File(String)</code>.
-	 * </p>
-	 *
-	 * @return a platform-dependent string representation of this path
-	 */
-	public String toOSString();
-
-	/**
-	 * Returns a platform-neutral string representation of this path. The 
-	 * format is not specified, except that the resulting string can be 
-	 * passed back to the <code>Path#fromPortableString(String)</code> 
-	 * constructor to produce the exact same path on any platform.
-	 * <p>
-	 * This string is suitable for passing to <code>Path#fromPortableString(String)</code>.
-	 * </p>
-	 *
-	 * @return a platform-neutral string representation of this path
-	 * @see Path#fromPortableString(String)
-	 * @since 3.1
-	 */
-	public String toPortableString();
-
-	/**
-	 * Returns a string representation of this path, including its
-	 * device id.  The same separator, "/", is used on all platforms.
-	 * <p>
-	 * Example result strings (without and with device id):
-	 * <pre>
-	 * "/foo/bar.txt"
-	 * "bar.txt"
-	 * "/foo/"
-	 * "foo/"
-	 * ""
-	 * "/"
-	 * "C:/foo/bar.txt"
-	 * "C:bar.txt"
-	 * "C:/foo/"
-	 * "C:foo/"
-	 * "C:"
-	 * "C:/"
-	 * </pre>
-	 * This string is suitable for passing to <code>Path(String)</code>.
-	 * </p>
-	 *
-	 * @return a string representation of this path
-	 * @see Path
-	 */
-	public String toString();
-
-	/**
-	 * Returns a copy of this path truncated after the
-	 * given number of segments. The number must not be negative.
-	 * The device id is preserved.
-	 * <p>
-	 * If this path has a trailing separator, the result will too
-	 * (assuming there are some segments left). If there is no
-	 * trailing separator, the result will not have a trailing
-	 * separator.
-	 * Copying up to segment zero simply means making an copy with
-	 * no path segments.
-	 * </p>
-	 *
-	 * @param count the segment number at which to truncate the path
-	 * @return the new path
-	 */
-	public IPath uptoSegment(int count);
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IProgressMonitor.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IProgressMonitor.java
deleted file mode 100644
index 3a8f2d7..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IProgressMonitor.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-/**
- * The <code>IProgressMonitor</code> interface is implemented
- * by objects that monitor the progress of an activity; the methods
- * in this interface are invoked by code that performs the activity.
- * <p>
- * All activity is broken down into a linear sequence of tasks against
- * which progress is reported. When a task begins, a <code>beginTask(String, int)
- * </code> notification is reported, followed by any number and mixture of 
- * progress reports (<code>worked()</code>) and subtask notifications 
- * (<code>subTask(String)</code>).  When the task is eventually completed, a 
- * <code>done()</code> notification is reported.  After the <code>done()</code>
- * notification, the progress monitor cannot be reused;  i.e., <code>
- * beginTask(String, int)</code> cannot be called again after the call to 
- * <code>done()</code>.
- * </p>
- * <p>
- * A request to cancel an operation can be signaled using the 
- * <code>setCanceled</code> method.  Operations taking a progress
- * monitor are expected to poll the monitor (using <code>isCanceled</code>)
- * periodically and abort at their earliest convenience.  Operation can however 
- * choose to ignore cancelation requests.
- * </p>
- * <p>
- * Since notification is synchronous with the activity itself, the listener should 
- * provide a fast and robust implementation. If the handling of notifications would 
- * involve blocking operations, or operations which might throw uncaught exceptions, 
- * the notifications should be queued, and the actual processing deferred (or perhaps
- * delegated to a separate thread).
- * </p>
- * <p>
- * Clients may implement this interface.
- * </p>
- */
-public interface IProgressMonitor {
-
-	/** Constant indicating an unknown amount of work.
-	 */
-	public final static int UNKNOWN = -1;
-
-	/**
-	 * Notifies that the main task is beginning.  This must only be called once
-	 * on a given progress monitor instance.
-	 * 
-	 * @param name the name (or description) of the main task
-	 * @param totalWork the total number of work units into which
-	 *  the main task is been subdivided. If the value is <code>UNKNOWN</code> 
-	 *  the implementation is free to indicate progress in a way which 
-	 *  doesn't require the total number of work units in advance.
-	 */
-	public void beginTask(String name, int totalWork);
-
-	/**
-	 * Notifies that the work is done; that is, either the main task is completed 
-	 * or the user canceled it. This method may be called more than once 
-	 * (implementations should be prepared to handle this case).
-	 */
-	public void done();
-
-	/**
-	 * Internal method to handle scaling correctly. This method
-	 * must not be called by a client. Clients should 
-	 * always use the method </code>worked(int)</code>.
-	 * 
-	 * @param work the amount of work done
-	 */
-	public void internalWorked(double work);
-
-	/**
-	 * Returns whether cancelation of current operation has been requested.
-	 * Long-running operations should poll to see if cancelation
-	 * has been requested.
-	 *
-	 * @return <code>true</code> if cancellation has been requested,
-	 *    and <code>false</code> otherwise
-	 * @see #setCanceled(boolean)
-	 */
-	public boolean isCanceled();
-
-	/**
-	 * Sets the cancel state to the given value.
-	 * 
-	 * @param value <code>true</code> indicates that cancelation has
-	 *     been requested (but not necessarily acknowledged);
-	 *     <code>false</code> clears this flag
-	 * @see #isCanceled()
-	 */
-	public void setCanceled(boolean value);
-
-	/**
-	 * Sets the task name to the given value. This method is used to 
-	 * restore the task label after a nested operation was executed. 
-	 * Normally there is no need for clients to call this method.
-	 *
-	 * @param name the name (or description) of the main task
-	 * @see #beginTask(java.lang.String, int)
-	 */
-	public void setTaskName(String name);
-
-	/**
-	 * Notifies that a subtask of the main task is beginning.
-	 * Subtasks are optional; the main task might not have subtasks.
-	 *
-	 * @param name the name (or description) of the subtask
-	 */
-	public void subTask(String name);
-
-	/**
-	 * Notifies that a given number of work unit of the main task
-	 * has been completed. Note that this amount represents an
-	 * installment, as opposed to a cumulative amount of work done
-	 * to date.
-	 *
-	 * @param work the number of work units just completed
-	 */
-	public void worked(int work);
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IProgressMonitorWithBlocking.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IProgressMonitorWithBlocking.java
deleted file mode 100644
index 23a2bac..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IProgressMonitorWithBlocking.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-/**
- * An extension to the IProgressMonitor interface for monitors that want to
- * support feedback when an activity is blocked due to concurrent activity in
- * another thread.
- * <p>
- * When a monitor that supports this extension is passed to an operation, the
- * operation should call <code>setBlocked</code> whenever it knows that it
- * must wait for a lock that is currently held by another thread. The operation
- * should continue to check for and respond to cancelation requests while
- * blocked. When the operation is no longer blocked, it must call <code>clearBlocked</code>
- * to clear the blocked state.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see IProgressMonitor
- * @since 3.0
- */
-public interface IProgressMonitorWithBlocking extends IProgressMonitor {
-	/**
-	 * Indicates that this operation is blocked by some background activity. If
-	 * a running operation ever calls <code>setBlocked</code>, it must
-	 * eventually call <code>clearBlocked</code> before the operation
-	 * completes.
-	 * <p>
-	 * If the caller is blocked by a currently executing job, this method will return
-	 * an <code>IJobStatus</code> indicating the job that is currently blocking
-	 * the caller. If this blocking job is not known, this method will return a plain
-	 * informational <code>IStatus</code> object.
-	 * </p>
-	 * 
-	 * @param reason an optional status object whose message describes the
-	 * reason why this operation is blocked, or <code>null</code> if this
-	 * information is not available.
-	 * @see #clearBlocked()
-	 * @see org.eclipse.core.runtime.jobs.IJobStatus
-	 */
-	public void setBlocked(IStatus reason);
-
-	/**
-	 * Clears the blocked state of the running operation. If a running
-	 * operation ever calls <code>setBlocked</code>, it must eventually call
-	 * <code>clearBlocked</code> before the operation completes.
-	 * 
-	 * @see #setBlocked(IStatus)
-	 */
-	public void clearBlocked();
-
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/ISafeRunnable.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/ISafeRunnable.java
deleted file mode 100644
index 02a7ce1..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/ISafeRunnable.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-/**
- * Safe runnables represent blocks of code and associated exception
- * handlers.  They are typically used when a plug-in needs to call some
- * untrusted code (e.g., code contributed by another plug-in via an
- * extension).
- * <p>
- * Clients may implement this interface.
- * </p>
- * 
- * @see Platform#run(ISafeRunnable)
- */
-public interface ISafeRunnable {
-	/**
-	 * Handles an exception thrown by this runnable's <code>run</code>
-	 * method.  The processing done here should be specific to the
-	 * particular usecase for this runnable.  Generalized exception
-	 * processing (e.g., logging in the platform's log) is done by the
-	 * Platform's run mechanism.
-	 *
-	 * @param exception an exception which occurred during processing
-	 *		the body of this runnable (i.e., in <code>run()</code>)
-	 * @see Platform#run(ISafeRunnable)
-	 */
-	public void handleException(Throwable exception);
-
-	/**
-	 * Runs this runnable.  Any exceptions thrown from this method will
-	 * be passed to this runnable's <code>handleException</code>
-	 * method.
-	 *
-	 * @exception Exception if a problem occurred while running this method.
-	 *		The exception will be processed by <code>handleException</code>
-	 * @see Platform#run(ISafeRunnable)
-	 */
-	public void run() throws Exception;
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IStatus.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IStatus.java
deleted file mode 100644
index a241885..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IStatus.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-/**
- * A status object represents the outcome of an operation.
- * All <code>CoreException</code>s carry a status object to indicate 
- * what went wrong. Status objects are also returned by methods needing 
- * to provide details of failures (e.g., validation methods).
- * <p>
- * A status carries the following information:
- * <ul>
- * <li> plug-in identifier (required)</li>
- * <li> severity (required)</li>
- * <li> status code (required)</li>
- * <li> message (required) - localized to current locale</li>
- * <li> exception (optional) - for problems stemming from a failure at
- *    a lower level</li>
- * </ul>
- * Some status objects, known as multi-statuses, have other status objects 
- * as children.
- * </p>
- * <p>
- * The class <code>Status</code> is the standard public implementation
- * of status objects; the subclass <code>MultiStatus</code> is the
- * implements multi-status objects.
- * </p>
- * @see MultiStatus
- * @see Status
- */
-public interface IStatus {
-
-	/** Status severity constant (value 0) indicating this status represents the nominal case.
-	 * This constant is also used as the status code representing the nominal case.
-	 * @see #getSeverity()
-	 * @see #isOK()
-	 */
-	public static final int OK = 0;
-
-	/** Status type severity (bit mask, value 1) indicating this status is informational only.
-	 * @see #getSeverity()
-	 * @see #matches(int)
-	 */
-	public static final int INFO = 0x01;
-
-	/** Status type severity (bit mask, value 2) indicating this status represents a warning.
-	 * @see #getSeverity()
-	 * @see #matches(int)
-	 */
-	public static final int WARNING = 0x02;
-
-	/** Status type severity (bit mask, value 4) indicating this status represents an error.
-	 * @see #getSeverity()
-	 * @see #matches(int)
-	 */
-	public static final int ERROR = 0x04;
-
-	/** Status type severity (bit mask, value 8) indicating this status represents a
-	 * cancelation
-	 * @see #getSeverity()
-	 * @see #matches(int)
-	 * @since 3.0
-	 */
-	public static final int CANCEL = 0x08;
-
-	/**
-	 * Returns a list of status object immediately contained in this
-	 * multi-status, or an empty list if this is not a multi-status.
-	 *
-	 * @return an array of status objects
-	 * @see #isMultiStatus()
-	 */
-	public IStatus[] getChildren();
-
-	/**
-	 * Returns the plug-in-specific status code describing the outcome.
-	 *
-	 * @return plug-in-specific status code
-	 */
-	public int getCode();
-
-	/**
-	 * Returns the relevant low-level exception, or <code>null</code> if none. 
-	 * For example, when an operation fails because of a network communications
-	 * failure, this might return the <code>java.io.IOException</code>
-	 * describing the exact nature of that failure.
-	 *
-	 * @return the relevant low-level exception, or <code>null</code> if none
-	 */
-	public Throwable getException();
-
-	/**
-	 * Returns the message describing the outcome.
-	 * The message is localized to the current locale.
-	 *
-	 * @return a localized message
-	 */
-	public String getMessage();
-
-	/**
-	 * Returns the unique identifier of the plug-in associated with this status
-	 * (this is the plug-in that defines the meaning of the status code).
-	 *
-	 * @return the unique identifier of the relevant plug-in
-	 */
-	public String getPlugin();
-
-	/**
-	 * Returns the severity. The severities are as follows (in
-	 * descending order):
-	 * <ul>
-	 * <li><code>CANCEL</code> - cancelation occurred</li>
-	 * <li><code>ERROR</code> - a serious error (most severe)</li>
-	 * <li><code>WARNING</code> - a warning (less severe)</li>
-	 * <li><code>INFO</code> - an informational ("fyi") message (least severe)</li>
-	 * <li><code>OK</code> - everything is just fine</li>
-	 * </ul>
-	 * <p>
-	 * The severity of a multi-status is defined to be the maximum
-	 * severity of any of its children, or <code>OK</code> if it has
-	 * no children.
-	 * </p>
-	 *
-	 * @return the severity: one of <code>OK</code>, <code>ERROR</code>, 
-	 * <code>INFO</code>, <code>WARNING</code>,  or <code>CANCEL</code>
-	 * @see #matches(int)
-	 */
-	public int getSeverity();
-
-	/**
-	 * Returns whether this status is a multi-status.
-	 * A multi-status describes the outcome of an operation
-	 * involving multiple operands.
-	 * <p>
-	 * The severity of a multi-status is derived from the severities
-	 * of its children; a multi-status with no children is
-	 * <code>OK</code> by definition.
-	 * A multi-status carries a plug-in identifier, a status code,
-	 * a message, and an optional exception. Clients may treat
-	 * multi-status objects in a multi-status unaware way.
-	 * </p>
-	 *
-	 * @return <code>true</code> for a multi-status, 
-	 *    <code>false</code> otherwise
-	 * @see #getChildren()
-	 */
-	public boolean isMultiStatus();
-
-	/**
-	 * Returns whether this status indicates everything is okay
-	 * (neither info, warning, nor error).
-	 *
-	 * @return <code>true</code> if this status has severity
-	 *    <code>OK</code>, and <code>false</code> otherwise
-	 */
-	public boolean isOK();
-
-	/**
-	 * Returns whether the severity of this status matches the given
-	 * severity mask. Note that a status with severity <code>OK</code>
-	 * will never match; use <code>isOK</code> instead to detect
-	 * a status with a severity of <code>OK</code>.
-	 *
-	 * @param severityMask a mask formed by bitwise or'ing severity mask
-	 *    constants (<code>ERROR</code>, <code>WARNING</code>,
-	 *    <code>INFO</code>, <code>CANCEL</code>)
-	 * @return <code>true</code> if there is at least one match, 
-	 *    <code>false</code> if there are no matches
-	 * @see #getSeverity()
-	 * @see #CANCEL
-	 * @see #ERROR
-	 * @see #WARNING
-	 * @see #INFO
-	 */
-	public boolean matches(int severityMask);
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/ListenerList.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/ListenerList.java
deleted file mode 100644
index f854147..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/ListenerList.java
+++ /dev/null
@@ -1,176 +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;
-
-/**
- * This class is a thread safe list that is designed for storing lists of listeners.
- * The implementation is optimized for minimal memory footprint, frequent reads 
- * and infrequent writes.  Modification of the list is synchronized and relatively
- * expensive, while accessing the listeners is very fast.  Readers are given access 
- * to the underlying array data structure for reading, with the trust that they will 
- * not modify the underlying array.
- * <p>
- * <a name="same">A listener list handles the <i>same</i> listener being added 
- * multiple times, and tolerates removal of listeners that are the same as other
- * listeners in the list.  For this purpose, listeners can be compared with each other 
- * using either equality or identity, as specified in the list constructor.
- * </p>
- * 
- * @since org.eclipse.equinox.common 1.0
- */
-public class ListenerList {
-
-	/**
-	 * The empty array singleton instance.
-	 */
-	private static final Object[] EmptyArray = new Object[0];
-
-	/**
-	 * Mode constant (value 0) indicating that listeners should be considered
-	 * the <a href="#same">same</a> if they are equal.
-	 */
-	public static final int EQUALITY = 0;
-
-	/**
-	 * Mode constant (value 1) indicating that listeners should be considered
-	 * the <a href="#same">same</a> if they are identical.
-	 */
-	public static final int IDENTITY = 1;
-
-	/**
-	 * Indicates the comparison mode used to determine if two
-	 * listeners are equivalent
-	 */
-	private final boolean identity;
-
-	/**
-	 * The list of listeners.  Initially empty but initialized
-	 * to an array of size capacity the first time a listener is added.
-	 * Maintains invariant: listeners != null
-	 */
-	private volatile Object[] listeners = EmptyArray;
-
-	/**
-	 * Creates a listener list in which listeners are compared using equality.
-	 */
-	public ListenerList() {
-		this(EQUALITY);
-	}
-
-	/**
-	 * Creates a listener list using the provided comparison mode.
-	 * 
-	 * @param mode The mode used to determine if listeners are the <a href="#same">same</a>.
-	 */
-	public ListenerList(int mode) {
-		if (mode != EQUALITY && mode != IDENTITY)
-			throw new IllegalArgumentException();
-		this.identity = mode == IDENTITY;
-	}
-
-	/**
-	 * Adds a listener to this list. This method has no effect if the <a href="#same">same</a>
-	 * listener is already registered.
-	 * 
-	 * @param listener the listener to add
-	 */
-	public synchronized void add(Object listener) {
-		// This method is synchronized to protect against multiple threads adding 
-		// or removing listeners concurrently. This does not block concurrent readers.
-		if (listener == null)
-			throw new IllegalArgumentException();
-		// check for duplicates 
-		final int oldSize = listeners.length;
-		for (int i = 0; i < oldSize; ++i) {
-			Object listener2 = listeners[i];
-			if (identity ? listener == listener2 : listener.equals(listener2))
-				return;
-		}
-		// Thread safety: create new array to avoid affecting concurrent readers
-		Object[] newListeners = new Object[oldSize + 1];
-		System.arraycopy(listeners, 0, newListeners, 0, oldSize);
-		newListeners[oldSize] = listener;
-		//atomic assignment
-		this.listeners = newListeners;
-	}
-
-	/**
-	 * Returns an array containing all the registered listeners.
-	 * The resulting array is unaffected by subsequent adds or removes.
-	 * If there are no listeners registered, the result is an empty array.
-	 * Use this method when notifying listeners, so that any modifications
-	 * to the listener list during the notification will have no effect on 
-	 * the notification itself.
-	 * <p>
-	 * Note: Callers of this method <b>must not</b> modify the returned array. 
-	 *
-	 * @return the list of registered listeners
-	 */
-	public Object[] getListeners() {
-		return listeners;
-	}
-
-	/**
-	 * Returns whether this listener list is empty.
-	 *
-	 * @return <code>true</code> if there are no registered listeners, and
-	 *   <code>false</code> otherwise
-	 */
-	public boolean isEmpty() {
-		return listeners.length == 0;
-	}
-
-	/**
-	 * Removes a listener from this list. Has no effect if the <a href="#same">same</a> 
-	 * listener was not already registered.
-	 *
-	 * @param listener the listener to remove
-	 */
-	public synchronized void remove(Object listener) {
-		// This method is synchronized to protect against multiple threads adding 
-		// or removing listeners concurrently. This does not block concurrent readers.
-		if (listener == null)
-			throw new IllegalArgumentException();
-		int oldSize = listeners.length;
-		for (int i = 0; i < oldSize; ++i) {
-			Object listener2 = listeners[i];
-			if (identity ? listener == listener2 : listener.equals(listener2)) {
-				if (oldSize == 1) {
-					listeners = EmptyArray;
-				} else {
-					// Thread safety: create new array to avoid affecting concurrent readers
-					Object[] newListeners = new Object[oldSize - 1];
-					System.arraycopy(listeners, 0, newListeners, 0, i);
-					System.arraycopy(listeners, i + 1, newListeners, i, oldSize - i - 1);
-					//atomic assignment to field
-					this.listeners = newListeners;
-				}
-				return;
-			}
-		}
-	}
-
-	/**
-	 * Returns the number of registered listeners.
-	 *
-	 * @return the number of registered listeners
-	 */
-	public int size() {
-		return listeners.length;
-	}
-	
-    /**
-     * Removes all listeners from this list.
-     */
-    public synchronized void clear() {
-            listeners = EmptyArray;
-    }
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/MultiStatus.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/MultiStatus.java
deleted file mode 100644
index 5d8ed50..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/MultiStatus.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-/**
- * A concrete multi-status implementation, 
- * suitable either for instantiating or subclassing.
- */
-public class MultiStatus extends Status {
-
-	/** List of child statuses.
-	 */
-	private IStatus[] children;
-
-	/**
-	 * Creates and returns a new multi-status object with the given children.
-	 *
-	 * @param pluginId the unique identifier of the relevant plug-in
-	 * @param code the plug-in-specific status code
-	 * @param newChildren the list of children status objects
-	 * @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 MultiStatus(String pluginId, int code, IStatus[] newChildren, String message, Throwable exception) {
-		this(pluginId, code, message, exception);
-		Assert.isLegal(newChildren != null);
-		int maxSeverity = getSeverity();
-		for (int i = 0; i < newChildren.length; i++) {
-			Assert.isLegal(newChildren[i] != null);
-			int severity = newChildren[i].getSeverity();
-			if (severity > maxSeverity)
-				maxSeverity = severity;
-		}
-		this.children = new IStatus[newChildren.length];
-		setSeverity(maxSeverity);
-		System.arraycopy(newChildren, 0, this.children, 0, newChildren.length);
-	}
-
-	/**
-	 * Creates and returns a new multi-status object with no children.
-	 *
-	 * @param pluginId the unique identifier of the relevant plug-in
-	 * @param code the plug-in-specific status code
-	 * @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 MultiStatus(String pluginId, int code, String message, Throwable exception) {
-		super(OK, pluginId, code, message, exception);
-		children = new IStatus[0];
-	}
-
-	/**
-	 * Adds the given status to this multi-status.
-	 *
-	 * @param status the new child status
-	 */
-	public void add(IStatus status) {
-		Assert.isLegal(status != null);
-		IStatus[] result = new IStatus[children.length + 1];
-		System.arraycopy(children, 0, result, 0, children.length);
-		result[result.length - 1] = status;
-		children = result;
-		int newSev = status.getSeverity();
-		if (newSev > getSeverity()) {
-			setSeverity(newSev);
-		}
-	}
-
-	/**
-	 * Adds all of the children of the given status to this multi-status.
-	 * Does nothing if the given status has no children (which includes
-	 * the case where it is not a multi-status).
-	 *
-	 * @param status the status whose children are to be added to this one
-	 */
-	public void addAll(IStatus status) {
-		Assert.isLegal(status != null);
-		IStatus[] statuses = status.getChildren();
-		for (int i = 0; i < statuses.length; i++) {
-			add(statuses[i]);
-		}
-	}
-
-	/* (Intentionally not javadoc'd)
-	 * Implements the corresponding method on <code>IStatus</code>.
-	 */
-	public IStatus[] getChildren() {
-		return children;
-	}
-
-	/* (Intentionally not javadoc'd)
-	 * Implements the corresponding method on <code>IStatus</code>.
-	 */
-	public boolean isMultiStatus() {
-		return true;
-	}
-
-	/**
-	 * Merges the given status into this multi-status.
-	 * Equivalent to <code>add(status)</code> if the
-	 * given status is not a multi-status. 
-	 * Equivalent to <code>addAll(status)</code> if the
-	 * given status is a multi-status. 
-	 *
-	 * @param status the status to merge into this one
-	 * @see #add(IStatus)
-	 * @see #addAll(IStatus)
-	 */
-	public void merge(IStatus status) {
-		Assert.isLegal(status != null);
-		if (!status.isMultiStatus()) {
-			add(status);
-		} else {
-			addAll(status);
-		}
-	}
-
-	/**
-	 * Returns a string representation of the status, suitable 
-	 * for debugging purposes only.
-	 */
-	public String toString() {
-		StringBuffer buf = new StringBuffer(super.toString());
-		buf.append(" children=["); //$NON-NLS-1$
-		for (int i = 0; i < children.length; i++) {
-			if (i != 0) {
-				buf.append(" "); //$NON-NLS-1$
-			}
-			buf.append(children[i].toString());
-		}
-		buf.append("]"); //$NON-NLS-1$
-		return buf.toString();
-	}
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/NullProgressMonitor.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/NullProgressMonitor.java
deleted file mode 100644
index 6c54d47..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/NullProgressMonitor.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-/**
- * A default progress monitor implementation suitable for
- * subclassing.
- * <p>
- * This implementation supports cancelation. The default
- * implementations of the other methods do nothing.
- * </p>
- */
-public class NullProgressMonitor implements IProgressMonitor {
-
-	/**
-	 * Indicates whether cancel has been requested.
-	 */
-	private boolean cancelled = false;
-
-	/**
-	 * Constructs a new progress monitor.
-	 */
-	public NullProgressMonitor() {
-		super();
-	}
-
-	/**
-	 * This implementation does nothing. 
-	 * Subclasses may override this method to do interesting
-	 * processing when a task begins.
-	 * 
-	 * @see IProgressMonitor#beginTask(String, int)
-	 */
-	public void beginTask(String name, int totalWork) {
-		// do nothing
-	}
-
-	/**
-	 * This implementation does nothing.
-	 * Subclasses may override this method to do interesting
-	 * processing when a task is done.
-	 * 
-	 * @see IProgressMonitor#done()
-	 */
-	public void done() {
-		// do nothing
-	}
-
-	/**
-	 * This implementation does nothing.
-	 * Subclasses may override this method.
-	 * 
-	 * @see IProgressMonitor#internalWorked(double)
-	 */
-	public void internalWorked(double work) {
-		// do nothing
-	}
-
-	/**
-	 * This implementation returns the value of the internal 
-	 * state variable set by <code>setCanceled</code>.
-	 * Subclasses which override this method should
-	 * override <code>setCanceled</code> as well.
-	 *
-	 * @see IProgressMonitor#isCanceled()
-	 * @see IProgressMonitor#setCanceled(boolean)
-	 */
-	public boolean isCanceled() {
-		return cancelled;
-	}
-
-	/**
-	 * This implementation sets the value of an internal state variable.
-	 * Subclasses which override this method should override 
-	 * <code>isCanceled</code> as well.
-	 *
-	 * @see IProgressMonitor#isCanceled()
-	 * @see IProgressMonitor#setCanceled(boolean)
-	 */
-	public void setCanceled(boolean cancelled) {
-		this.cancelled = cancelled;
-	}
-
-	/**
-	 * This implementation does nothing.
-	 * Subclasses may override this method to do something
-	 * with the name of the task.
-	 * 
-	 * @see IProgressMonitor#setTaskName(String)
-	 */
-	public void setTaskName(String name) {
-		// do nothing
-	}
-
-	/**
-	 * This implementation does nothing.
-	 * Subclasses may override this method to do interesting
-	 * processing when a subtask begins.
-	 * 
-	 * @see IProgressMonitor#subTask(String)
-	 */
-	public void subTask(String name) {
-		// do nothing
-	}
-
-	/**
-	 * This implementation does nothing.
-	 * Subclasses may override this method to do interesting
-	 * processing when some work has been completed.
-	 * 
-	 * @see IProgressMonitor#worked(int)
-	 */
-	public void worked(int work) {
-		// do nothing
-	}
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/OperationCanceledException.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/OperationCanceledException.java
deleted file mode 100644
index c013735..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/OperationCanceledException.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-/**
- * This exception is thrown to blow out of a long-running method 
- * when the user cancels it.
- * <p>
- * This class is not intended to be subclassed by clients but
- * may be instantiated.
- * </p>
- */
-public final class OperationCanceledException extends RuntimeException {
-	/**
-	 * All serializable objects should have a stable serialVersionUID
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * Creates a new exception.
-	 */
-	public OperationCanceledException() {
-		super();
-	}
-
-	/**
-	 * Creates a new exception with the given message.
-	 * 
-	 * @param message the message for the exception
-	 */
-	public OperationCanceledException(String message) {
-		super(message);
-	}
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/Path.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/Path.java
deleted file mode 100644
index 6eb25ca..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/Path.java
+++ /dev/null
@@ -1,986 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-import java.io.File;
-
-/** 
- * The standard implementation of the <code>IPath</code> interface.
- * Paths are always maintained in canonicalized form.  That is, parent
- * references (i.e., <code>../../</code>) and duplicate separators are 
- * resolved.  For example,
- * <pre>     new Path("/a/b").append("../foo/bar")</pre>
- * will yield the path
- * <pre>     /a/foo/bar</pre>
- * <p>
- * This class is not intended to be subclassed by clients but
- * may be instantiated.
- * </p>
- * @see IPath
- */
-public class Path implements IPath, Cloneable {
-	/** masks for separator values */
-	private static final int HAS_LEADING = 1;
-	private static final int IS_UNC = 2;
-	private static final int HAS_TRAILING = 4;
-
-	private static final int ALL_SEPARATORS = HAS_LEADING | IS_UNC | HAS_TRAILING;
-
-	/** Constant empty string value. */
-	private static final String EMPTY_STRING = ""; //$NON-NLS-1$
-
-	/** Constant value indicating no segments */
-	private static final String[] NO_SEGMENTS = new String[0];
-
-	/** Constant value containing the empty path with no device. */
-	public static final Path EMPTY = new Path(EMPTY_STRING);
-
-	/** Mask for all bits that are involved in the hash code */
-	private static final int HASH_MASK = ~HAS_TRAILING;
-
-
-	/** Constant root path string (<code>"/"</code>). */
-	private static final String ROOT_STRING = "/"; //$NON-NLS-1$
-
-	/** Constant value containing the root path with no device. */
-	public static final Path ROOT = new Path(ROOT_STRING);
-	
-	/** Constant value indicating if the current platform is Windows */
-	private static final boolean WINDOWS = java.io.File.separatorChar == '\\';
-
-	/** The device id string. May be null if there is no device. */
-	private String device = null;
-
-	//Private implementation note: the segments and separators 
-	//arrays are never modified, so that they can be shared between 
-	//path instances
-
-	/** The path segments */
-	private String[] segments;
-
-	/** flags indicating separators (has leading, is UNC, has trailing) */
-	private int separators;
-
-	/** 
-	 * Constructs a new path from the given string path.
-	 * The string path must represent a valid file system path
-	 * on the local file system. 
-	 * The path is canonicalized and double slashes are removed
-	 * except at the beginning. (to handle UNC paths). All forward
-	 * slashes ('/') are treated as segment delimiters, and any
-	 * segment and device delimiters for the local file system are
-	 * also respected.
-	 *
-	 * @param pathString the portable string path
-	 * @see IPath#toPortableString()
-	 * @since 3.1
-	 */
-	public static IPath fromOSString(String pathString) {
-		return new Path(pathString);
-	}
-	
-	/** 
-	 * Constructs a new path from the given path string.
-	 * The path string must have been produced by a previous
-	 * call to <code>IPath.toPortableString</code>.
-	 *
-	 * @param pathString the portable path string
-	 * @see IPath#toPortableString()
-	 * @since 3.1
-	 */
-	public static IPath fromPortableString(String pathString) {
-		int firstMatch = pathString.indexOf(DEVICE_SEPARATOR) +1;
-		//no extra work required if no device characters
-		if (firstMatch <= 0)
-			return new Path().initialize(null, pathString);
-		//if we find a single colon, then the path has a device
-		String devicePart = null;
-		int pathLength = pathString.length();
-		if (firstMatch == pathLength || pathString.charAt(firstMatch) != DEVICE_SEPARATOR) {
-			devicePart = pathString.substring(0, firstMatch);
-			pathString = pathString.substring(firstMatch, pathLength);
-		}
-		//optimize for no colon literals
-		if (pathString.indexOf(DEVICE_SEPARATOR) == -1) 
-			return new Path().initialize(devicePart, pathString);
-		//contract colon literals
-		char[] chars = pathString.toCharArray();
-		int readOffset = 0, writeOffset = 0, length = chars.length;
-		while (readOffset < length) {
-			if (chars[readOffset] == DEVICE_SEPARATOR)
-				if (++readOffset >= length)
-					break;
-			chars[writeOffset++] = chars[readOffset++];
-		}
-		return new Path().initialize(devicePart, new String(chars, 0, writeOffset));
-	}
-	
-	/* (Intentionally not included in javadoc)
-	 * Private constructor.
-	 */
-	private Path() {
-		// not allowed
-	}
-
-	/** 
-	 * Constructs a new path from the given string path.
-	 * The string path must represent a valid file system path
-	 * on the local file system. 
-	 * The path is canonicalized and double slashes are removed
-	 * except at the beginning. (to handle UNC paths). All forward
-	 * slashes ('/') are treated as segment delimiters, and any
-	 * segment and device delimiters for the local file system are
-	 * also respected (such as colon (':') and backslash ('\') on some file systems).
-	 *
-	 * @param fullPath the string path
-	 * @see #isValidPath(String)
-	 */
-	public Path(String fullPath) {
-		String devicePart = null;
-		if (WINDOWS) {
-			//convert backslash to forward slash
-			fullPath = fullPath.indexOf('\\') == -1 ? fullPath : fullPath.replace('\\', SEPARATOR);
-			//extract device
-			int i = fullPath.indexOf(DEVICE_SEPARATOR);
-			if (i != -1) {
-				//remove leading slash from device part to handle output of URL.getFile()
-				int start = fullPath.charAt(0) == SEPARATOR ? 1 : 0;
-				devicePart = fullPath.substring(start, i + 1);
-				fullPath = fullPath.substring(i + 1, fullPath.length());
-			}
-		}
-		initialize(devicePart, fullPath);
-	}
-
-	/** 
-	 * Constructs a new path from the given device id and string path.
-	 * The given string path must be valid.
-	 * The path is canonicalized and double slashes are removed except
-	 * at the beginning (to handle UNC paths). All forward
-	 * slashes ('/') are treated as segment delimiters, and any
-	 * segment delimiters for the local file system are
-	 * also respected (such as backslash ('\') on some file systems).
-	 *
-	 * @param device the device id
-	 * @param path the string path
-	 * @see #isValidPath(String)
-	 * @see #setDevice(String)
-	 */
-	public Path(String device, String path) {
-		if (WINDOWS) {
-			//convert backslash to forward slash
-			path = path.indexOf('\\') == -1 ? path : path.replace('\\', SEPARATOR);
-		}
-		initialize(device, path);
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * Private constructor.
-	 */
-	private Path(String device, String[] segments, int _separators) {
-		// no segment validations are done for performance reasons	
-		this.segments = segments;
-		this.device = device;
-		//hash code is cached in all but the bottom three bits of the separators field
-		this.separators = (computeHashCode() << 3) | (_separators & ALL_SEPARATORS);
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#addFileExtension
-	 */
-	public IPath addFileExtension(String extension) {
-		if (isRoot() || isEmpty() || hasTrailingSeparator())
-			return this;
-		int len = segments.length;
-		String[] newSegments = new String[len];
-		System.arraycopy(segments, 0, newSegments, 0, len - 1);
-		newSegments[len - 1] = segments[len - 1] + '.' + extension;
-		return new Path(device, newSegments, separators);
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#addTrailingSeparator
-	 */
-	public IPath addTrailingSeparator() {
-		if (hasTrailingSeparator() || isRoot()) {
-			return this;
-		}
-		//XXX workaround, see 1GIGQ9V
-		if (isEmpty()) {
-			return new Path(device, segments, HAS_LEADING);
-		}
-		return new Path(device, segments, separators | HAS_TRAILING);
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#append(IPath)
-	 */
-	public IPath append(IPath tail) {
-		//optimize some easy cases
-		if (tail == null || tail.segmentCount() == 0)
-			return this;
-		if (this.isEmpty())
-			return tail.setDevice(device).makeRelative();
-		if (this.isRoot())
-			return tail.setDevice(device).makeAbsolute();
-
-		//concatenate the two segment arrays
-		int myLen = segments.length;
-		int tailLen = tail.segmentCount();
-		String[] newSegments = new String[myLen + tailLen];
-		System.arraycopy(segments, 0, newSegments, 0, myLen);
-		for (int i = 0; i < tailLen; i++) {
-			newSegments[myLen + i] = tail.segment(i);
-		}
-		//use my leading separators and the tail's trailing separator
-		Path result = new Path(device, newSegments, (separators & (HAS_LEADING | IS_UNC)) | (tail.hasTrailingSeparator() ? HAS_TRAILING : 0));
-		String tailFirstSegment = newSegments[myLen];
-		if (tailFirstSegment.equals("..") || tailFirstSegment.equals(".")) { //$NON-NLS-1$ //$NON-NLS-2$
-			result.canonicalize();
-		}
-		return result;
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#append(java.lang.String)
-	 */
-	public IPath append(String tail) {
-		//optimize addition of a single segment
-		if (tail.indexOf(SEPARATOR) == -1 && tail.indexOf("\\") == -1 && tail.indexOf(DEVICE_SEPARATOR) == -1) { //$NON-NLS-1$
-			int tailLength = tail.length();
-			if (tailLength < 3) {
-				//some special cases
-				if (tailLength == 0 || ".".equals(tail)) { //$NON-NLS-1$
-					return this;
-				}
-				if ("..".equals(tail)) //$NON-NLS-1$
-					return removeLastSegments(1);
-			}
-			//just add the segment
-			int myLen = segments.length;
-			String[] newSegments = new String[myLen + 1];
-			System.arraycopy(segments, 0, newSegments, 0, myLen);
-			newSegments[myLen] = tail;
-			return new Path(device, newSegments, separators & ~HAS_TRAILING);
-		}
-		//go with easy implementation
-		return append(new Path(tail));
-	}
-
-	/**
-	 * Destructively converts this path to its canonical form.
-	 * <p>
-	 * In its canonical form, a path does not have any
-	 * "." segments, and parent references ("..") are collapsed
-	 * where possible.
-	 * </p>
-	 * @return true if the path was modified, and false otherwise.
-	 */
-	private boolean canonicalize() {
-		//look for segments that need canonicalizing
-		for (int i = 0, max = segments.length; i < max; i++) {
-			String segment = segments[i];
-			if (segment.charAt(0) == '.' && (segment.equals("..") || segment.equals("."))) { //$NON-NLS-1$ //$NON-NLS-2$
-				//path needs to be canonicalized
-				collapseParentReferences();
-				//paths of length 0 have no trailing separator
-				if (segments.length == 0)
-					separators &= (HAS_LEADING | IS_UNC);
-				//recompute hash because canonicalize affects hash
-				separators = (separators & ALL_SEPARATORS) | (computeHashCode() << 3);
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * Clones this object.
-	 */
-	public Object clone() {
-		try {
-			return super.clone();
-		} catch (CloneNotSupportedException e) {
-			return null;
-		}
-	}
-
-	/**
-	 * Destructively removes all occurrences of ".." segments from this path.
-	 */
-	private void collapseParentReferences() {
-		int segmentCount = segments.length;
-		String[] stack = new String[segmentCount];
-		int stackPointer = 0;
-		for (int i = 0; i < segmentCount; i++) {
-			String segment = segments[i];
-			if (segment.equals("..")) { //$NON-NLS-1$
-				if (stackPointer == 0) {
-					// if the stack is empty we are going out of our scope 
-					// so we need to accumulate segments.  But only if the original
-					// path is relative.  If it is absolute then we can't go any higher than
-					// root so simply toss the .. references.
-					if (!isAbsolute())
-						stack[stackPointer++] = segment; //stack push
-				} else {
-					// if the top is '..' then we are accumulating segments so don't pop
-					if ("..".equals(stack[stackPointer - 1])) //$NON-NLS-1$
-						stack[stackPointer++] = ".."; //$NON-NLS-1$
-					else
-						stackPointer--;
-					//stack pop
-				}
-				//collapse current references
-			} else if (!segment.equals(".") || (i == 0 && !isAbsolute())) //$NON-NLS-1$
-				stack[stackPointer++] = segment; //stack push
-		}
-		//if the number of segments hasn't changed, then no modification needed
-		if (stackPointer == segmentCount)
-			return;
-		//build the new segment array backwards by popping the stack
-		String[] newSegments = new String[stackPointer];
-		System.arraycopy(stack, 0, newSegments, 0, stackPointer);
-		this.segments = newSegments;
-	}
-
-	/**
-	 * Removes duplicate slashes from the given path, with the exception
-	 * of leading double slash which represents a UNC path.
-	 */
-	private String collapseSlashes(String path) {
-		int length = path.length();
-		// if the path is only 0, 1 or 2 chars long then it could not possibly have illegal
-		// duplicate slashes.
-		if (length < 3)
-			return path;
-		// check for an occurrence of // in the path.  Start at index 1 to ensure we skip leading UNC //
-		// If there are no // then there is nothing to collapse so just return.
-		if (path.indexOf("//", 1) == -1) //$NON-NLS-1$
-			return path;
-		// We found an occurrence of // in the path so do the slow collapse.
-		char[] result = new char[path.length()];
-		int count = 0;
-		boolean hasPrevious = false;
-		char[] characters = path.toCharArray();
-		for (int index = 0; index < characters.length; index++) {
-			char c = characters[index];
-			if (c == SEPARATOR) {
-				if (hasPrevious) {
-					// skip double slashes, except for beginning of UNC.
-					// note that a UNC path can't have a device.
-					if (device == null && index == 1) {
-						result[count] = c;
-						count++;
-					}
-				} else {
-					hasPrevious = true;
-					result[count] = c;
-					count++;
-				}
-			} else {
-				hasPrevious = false;
-				result[count] = c;
-				count++;
-			}
-		}
-		return new String(result, 0, count);
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * Computes the hash code for this object.
-	 */
-	private int computeHashCode() {
-		int hash = device == null ? 17 : device.hashCode();
-		int segmentCount = segments.length;
-		for (int i = 0; i < segmentCount; i++) {
-			//this function tends to given a fairly even distribution
-			hash = hash * 37 + segments[i].hashCode();
-		}
-		return hash;
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * Returns the size of the string that will be created by toString or toOSString.
-	 */
-	private int computeLength() {
-		int length = 0;
-		if (device != null)
-			length += device.length();
-		if ((separators & HAS_LEADING) != 0)
-			length++;
-		if ((separators & IS_UNC) != 0)
-			length++;
-		//add the segment lengths
-		int max = segments.length;
-		if (max > 0) {
-			for (int i = 0; i < max; i++) {
-				length += segments[i].length();
-			}
-			//add the separator lengths
-			length += max - 1;
-		}
-		if ((separators & HAS_TRAILING) != 0)
-			length++;
-		return length;
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * Returns the number of segments in the given path
-	 */
-	private int computeSegmentCount(String path) {
-		int len = path.length();
-		if (len == 0 || (len == 1 && path.charAt(0) == SEPARATOR)) {
-			return 0;
-		}
-		int count = 1;
-		int prev = -1;
-		int i;
-		while ((i = path.indexOf(SEPARATOR, prev + 1)) != -1) {
-			if (i != prev + 1 && i != len) {
-				++count;
-			}
-			prev = i;
-		}
-		if (path.charAt(len - 1) == SEPARATOR) {
-			--count;
-		}
-		return count;
-	}
-
-	/**
-	 * Computes the segment array for the given canonicalized path.
-	 */
-	private String[] computeSegments(String path) {
-		// performance sensitive --- avoid creating garbage
-		int segmentCount = computeSegmentCount(path);
-		if (segmentCount == 0)
-			return NO_SEGMENTS;
-		String[] newSegments = new String[segmentCount];
-		int len = path.length();
-		// check for initial slash
-		int firstPosition = (path.charAt(0) == SEPARATOR) ? 1 : 0;
-		// check for UNC
-		if (firstPosition == 1 && len > 1 && (path.charAt(1) == SEPARATOR))
-			firstPosition = 2;
-		int lastPosition = (path.charAt(len - 1) != SEPARATOR) ? len - 1 : len - 2;
-		// for non-empty paths, the number of segments is 
-		// the number of slashes plus 1, ignoring any leading
-		// and trailing slashes
-		int next = firstPosition;
-		for (int i = 0; i < segmentCount; i++) {
-			int start = next;
-			int end = path.indexOf(SEPARATOR, next);
-			if (end == -1) {
-				newSegments[i] = path.substring(start, lastPosition + 1);
-			} else {
-				newSegments[i] = path.substring(start, end);
-			}
-			next = end + 1;
-		}
-		return newSegments;
-	}
-	/**
-	 * Returns the platform-neutral encoding of the given segment onto
-	 * the given string buffer. This escapes literal colon characters with double colons.
-	 */
-	private void encodeSegment(String string, StringBuffer buf) {
-		int len = string.length();
-		for (int i = 0; i < len; i++) {
-			char c = string.charAt(i);
-			buf.append(c);
-			if (c == DEVICE_SEPARATOR)
-				buf.append(DEVICE_SEPARATOR);
-		}
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * Compares objects for equality.
-	 */
-	public boolean equals(Object obj) {
-		if (this == obj)
-			return true;
-		if (!(obj instanceof Path))
-			return false;
-		Path target = (Path) obj;
-		//check leading separators and hash code
-		if ((separators & HASH_MASK) != (target.separators & HASH_MASK))
-			return false;
-		String[] targetSegments = target.segments;
-		int i = segments.length;
-		//check segment count
-		if (i != targetSegments.length)
-			return false;
-		//check segments in reverse order - later segments more likely to differ
-		while (--i >= 0)
-			if (!segments[i].equals(targetSegments[i]))
-				return false;
-		//check device last (least likely to differ)
-		return device == target.device || (device != null && device.equals(target.device));
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#getDevice
-	 */
-	public String getDevice() {
-		return device;
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#getFileExtension
-	 */
-	public String getFileExtension() {
-		if (hasTrailingSeparator()) {
-			return null;
-		}
-		String lastSegment = lastSegment();
-		if (lastSegment == null) {
-			return null;
-		}
-		int index = lastSegment.lastIndexOf('.');
-		if (index == -1) {
-			return null;
-		}
-		return lastSegment.substring(index + 1);
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * Computes the hash code for this object.
-	 */
-	public int hashCode() {
-		return separators & HASH_MASK;
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#hasTrailingSeparator2
-	 */
-	public boolean hasTrailingSeparator() {
-		return (separators & HAS_TRAILING) != 0;
-	}
-
-	/*
-	 * Initialize the current path with the given string.
-	 */
-	private IPath initialize(String deviceString, String path) {
-		Assert.isNotNull(path);
-		this.device = deviceString;
-
-		path = collapseSlashes(path);
-		int len = path.length();
-
-		//compute the separators array
-		if (len < 2) {
-			if (len == 1 && path.charAt(0) == SEPARATOR) {
-				this.separators = HAS_LEADING;
-			} else {
-				this.separators = 0;
-			}
-		} else {
-			boolean hasLeading = path.charAt(0) == SEPARATOR;
-			boolean isUNC = hasLeading && path.charAt(1) == SEPARATOR;
-			//UNC path of length two has no trailing separator
-			boolean hasTrailing = !(isUNC && len == 2) && path.charAt(len - 1) == SEPARATOR;
-			separators = hasLeading ? HAS_LEADING : 0;
-			if (isUNC)
-				separators |= IS_UNC;
-			if (hasTrailing)
-				separators |= HAS_TRAILING;
-		}
-		//compute segments and ensure canonical form
-		segments = computeSegments(path);
-		if (!canonicalize()) {
-			//compute hash now because canonicalize didn't need to do it
-			separators = (separators & ALL_SEPARATORS) | (computeHashCode() << 3);
-		}
-		return this;
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#isAbsolute
-	 */
-	public boolean isAbsolute() {
-		//it's absolute if it has a leading separator
-		return (separators & HAS_LEADING) != 0;
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#isEmpty
-	 */
-	public boolean isEmpty() {
-		//true if no segments and no leading prefix
-		return segments.length == 0 && ((separators & ALL_SEPARATORS) != HAS_LEADING);
-
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#isPrefixOf
-	 */
-	public boolean isPrefixOf(IPath anotherPath) {
-		if (device == null) {
-			if (anotherPath.getDevice() != null) {
-				return false;
-			}
-		} else {
-			if (!device.equalsIgnoreCase(anotherPath.getDevice())) {
-				return false;
-			}
-		}
-		if (isEmpty() || (isRoot() && anotherPath.isAbsolute())) {
-			return true;
-		}
-		int len = segments.length;
-		if (len > anotherPath.segmentCount()) {
-			return false;
-		}
-		for (int i = 0; i < len; i++) {
-			if (!segments[i].equals(anotherPath.segment(i)))
-				return false;
-		}
-		return true;
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#isRoot
-	 */
-	public boolean isRoot() {
-		//must have no segments, a leading separator, and not be a UNC path.
-		return this == ROOT || (segments.length == 0 && ((separators & ALL_SEPARATORS) == HAS_LEADING));
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#isUNC
-	 */
-	public boolean isUNC() {
-		if (device != null)
-			return false;
-		return (separators & IS_UNC) != 0;
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#isValidPath(String)
-	 */
-	public boolean isValidPath(String path) {
-		Path test = new Path(path);
-		for (int i = 0, max = test.segmentCount(); i < max; i++) 
-			if (!isValidSegment(test.segment(i))) 
-				return false;
-		return true;
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#isValidSegment(String)
-	 */
-	public boolean isValidSegment(String segment) {
-		int size = segment.length();
-		if (size == 0)
-			return false;
-		for (int i = 0; i < size; i++) {
-			char c = segment.charAt(i);
-			if (c == '/')
-				return false;
-			if (WINDOWS && (c == '\\' || c == ':'))
-				return false;
-		}
-		return true;
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#lastSegment()
-	 */
-	public String lastSegment() {
-		int len = segments.length;
-		return len == 0 ? null : segments[len - 1];
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#makeAbsolute()
-	 */
-	public IPath makeAbsolute() {
-		if (isAbsolute()) {
-			return this;
-		}
-		Path result = new Path(device, segments, separators | HAS_LEADING);
-		//may need canonicalizing if it has leading ".." or "." segments
-		if (result.segmentCount() > 0) {
-			String first = result.segment(0);
-			if (first.equals("..") || first.equals(".")) { //$NON-NLS-1$ //$NON-NLS-2$
-				result.canonicalize();
-			}
-		}
-		return result;
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#makeRelative()
-	 */
-	public IPath makeRelative() {
-		if (!isAbsolute()) {
-			return this;
-		}
-		return new Path(device, segments, separators & HAS_TRAILING);
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#makeUNC(boolean)
-	 */
-	public IPath makeUNC(boolean toUNC) {
-		// if we are already in the right form then just return
-		if (!(toUNC ^ isUNC()))
-			return this;
-
-		int newSeparators = this.separators;
-		if (toUNC) {
-			newSeparators |= HAS_LEADING | IS_UNC;
-		} else {
-			//mask out the UNC bit
-			newSeparators &= HAS_LEADING | HAS_TRAILING;
-		}
-		return new Path(toUNC ? null : device, segments, newSeparators);
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#matchingFirstSegments(IPath)
-	 */
-	public int matchingFirstSegments(IPath anotherPath) {
-		Assert.isNotNull(anotherPath);
-		int anotherPathLen = anotherPath.segmentCount();
-		int max = Math.min(segments.length, anotherPathLen);
-		int count = 0;
-		for (int i = 0; i < max; i++) {
-			if (!segments[i].equals(anotherPath.segment(i))) {
-				return count;
-			}
-			count++;
-		}
-		return count;
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#removeFileExtension()
-	 */
-	public IPath removeFileExtension() {
-		String extension = getFileExtension();
-		if (extension == null || extension.equals("")) { //$NON-NLS-1$
-			return this;
-		}
-		String lastSegment = lastSegment();
-		int index = lastSegment.lastIndexOf(extension) - 1;
-		return removeLastSegments(1).append(lastSegment.substring(0, index));
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#removeFirstSegments(int)
-	 */
-	public IPath removeFirstSegments(int count) {
-		if (count == 0)
-			return this;
-		if (count >= segments.length) {
-			return new Path(device, NO_SEGMENTS, 0);
-		}
-		Assert.isLegal(count > 0);
-		int newSize = segments.length - count;
-		String[] newSegments = new String[newSize];
-		System.arraycopy(this.segments, count, newSegments, 0, newSize);
-
-		//result is always a relative path
-		return new Path(device, newSegments, separators & HAS_TRAILING);
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#removeLastSegments(int)
-	 */
-	public IPath removeLastSegments(int count) {
-		if (count == 0)
-			return this;
-		if (count >= segments.length) {
-			//result will have no trailing separator
-			return new Path(device, NO_SEGMENTS, separators & (HAS_LEADING | IS_UNC));
-		}
-		Assert.isLegal(count > 0);
-		int newSize = segments.length - count;
-		String[] newSegments = new String[newSize];
-		System.arraycopy(this.segments, 0, newSegments, 0, newSize);
-		return new Path(device, newSegments, separators);
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#removeTrailingSeparator()
-	 */
-	public IPath removeTrailingSeparator() {
-		if (!hasTrailingSeparator()) {
-			return this;
-		}
-		return new Path(device, segments, separators & (HAS_LEADING | IS_UNC));
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#segment(int)
-	 */
-	public String segment(int index) {
-		if (index >= segments.length)
-			return null;
-		return segments[index];
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#segmentCount()
-	 */
-	public int segmentCount() {
-		return segments.length;
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#segments()
-	 */
-	public String[] segments() {
-		String[] segmentCopy = new String[segments.length];
-		System.arraycopy(segments, 0, segmentCopy, 0, segments.length);
-		return segmentCopy;
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#setDevice(String)
-	 */
-	public IPath setDevice(String value) {
-		if (value != null) {
-			Assert.isTrue(value.indexOf(IPath.DEVICE_SEPARATOR) == (value.length() - 1), "Last character should be the device separator"); //$NON-NLS-1$
-		}
-		//return the receiver if the device is the same
-		if (value == device || (value != null && value.equals(device)))
-			return this;
-
-		return new Path(value, segments, separators);
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#toFile()
-	 */
-	public File toFile() {
-		return new File(toOSString());
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#toOSString()
-	 */
-	public String toOSString() {
-		//Note that this method is identical to toString except
-		//it uses the OS file separator instead of the path separator
-		int resultSize = computeLength();
-		if (resultSize <= 0)
-			return EMPTY_STRING;
-		char FILE_SEPARATOR = File.separatorChar;
-		char[] result = new char[resultSize];
-		int offset = 0;
-		if (device != null) {
-			int size = device.length();
-			device.getChars(0, size, result, offset);
-			offset += size;
-		}
-		if ((separators & HAS_LEADING) != 0)
-			result[offset++] = FILE_SEPARATOR;
-		if ((separators & IS_UNC) != 0)
-			result[offset++] = FILE_SEPARATOR;
-		int len = segments.length - 1;
-		if (len >= 0) {
-			//append all but the last segment, with separators
-			for (int i = 0; i < len; i++) {
-				int size = segments[i].length();
-				segments[i].getChars(0, size, result, offset);
-				offset += size;
-				result[offset++] = FILE_SEPARATOR;
-			}
-			//append the last segment
-			int size = segments[len].length();
-			segments[len].getChars(0, size, result, offset);
-			offset += size;
-		}
-		if ((separators & HAS_TRAILING) != 0)
-			result[offset++] = FILE_SEPARATOR;
-		return new String(result);
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#toPortableString()
-	 */
-	public String toPortableString() {
-		int resultSize = computeLength();
-		if (resultSize <= 0)
-			return EMPTY_STRING;
-		StringBuffer result = new StringBuffer(resultSize);
-		if (device != null)
-			result.append(device);
-		if ((separators & HAS_LEADING) != 0)
-			result.append(SEPARATOR);
-		if ((separators & IS_UNC) != 0)
-			result.append(SEPARATOR);
-		int len = segments.length;
-		//append all segments with separators
-		for (int i = 0; i < len; i++) {
-			if (segments[i].indexOf(DEVICE_SEPARATOR) >= 0)
-				encodeSegment(segments[i], result);
-			else
-				result.append(segments[i]);
-			if (i < len-1 || (separators & HAS_TRAILING) != 0)
-				result.append(SEPARATOR);
-		}
-		return result.toString();
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#toString()
-	 */
-	public String toString() {
-		int resultSize = computeLength();
-		if (resultSize <= 0)
-			return EMPTY_STRING;
-		char[] result = new char[resultSize];
-		int offset = 0;
-		if (device != null) {
-			int size = device.length();
-			device.getChars(0, size, result, offset);
-			offset += size;
-		}
-		if ((separators & HAS_LEADING) != 0)
-			result[offset++] = SEPARATOR;
-		if ((separators & IS_UNC) != 0)
-			result[offset++] = SEPARATOR;
-		int len = segments.length - 1;
-		if (len >= 0) {
-			//append all but the last segment, with separators
-			for (int i = 0; i < len; i++) {
-				int size = segments[i].length();
-				segments[i].getChars(0, size, result, offset);
-				offset += size;
-				result[offset++] = SEPARATOR;
-			}
-			//append the last segment
-			int size = segments[len].length();
-			segments[len].getChars(0, size, result, offset);
-			offset += size;
-		}
-		if ((separators & HAS_TRAILING) != 0)
-			result[offset++] = SEPARATOR;
-		return new String(result);
-	}
-
-	/* (Intentionally not included in javadoc)
-	 * @see IPath#uptoSegment(int)
-	 */
-	public IPath uptoSegment(int count) {
-		if (count == 0)
-			return new Path(device, NO_SEGMENTS, separators & (HAS_LEADING | IS_UNC));
-		if (count >= segments.length)
-			return this;
-		Assert.isTrue(count > 0, "Invalid parameter to Path.uptoSegment"); //$NON-NLS-1$
-		String[] newSegments = new String[count];
-		System.arraycopy(segments, 0, newSegments, 0, count);
-		return new Path(device, newSegments, separators);
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/PlatformObject.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/PlatformObject.java
deleted file mode 100644
index 5b2e5c8..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/PlatformObject.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-import org.eclipse.core.internal.runtime.AdapterManager;
-
-/**
- * An abstract superclass implementing the <code>IAdaptable</code>
- * interface. <code>getAdapter</code> invocations are directed
- * to the platform's adapter manager.
- * <p>
- * Note: In situations where it would be awkward to subclass this
- * class, the same affect can be achieved simply by implementing
- * the <code>IAdaptable</code> interface and explicitly forwarding
- * the <code>getAdapter</code> request to the platform's 
- * adapter manager. The method would look like:
- * <pre>
- *     public Object getAdapter(Class adapter) {
- *         return Platform.getAdapterManager().getAdapter(this, adapter);
- *     }
- * </pre>
- * </p>
- * <p>
- * Clients may subclass.
- * </p>
- *
- * @see Platform#getAdapterManager()
- * @see IAdaptable
- */
-public abstract class PlatformObject implements IAdaptable {
-	/**
-	 * Constructs a new platform object.
-	 */
-	public PlatformObject() {
-		super();
-	}
-
-	/**
-	 * Returns an object which is an instance of the given class
-	 * associated with this object. Returns <code>null</code> if
-	 * no such object can be found.
-	 * <p>
-	 * This implementation of the method declared by <code>IAdaptable</code>
-	 * passes the request along to the platform's adapter manager; roughly
-	 * <code>Platform.getAdapterManager().getAdapter(this, adapter)</code>.
-	 * Subclasses may override this method (however, if they do so, they
-	 * should invoke the method on their superclass to ensure that the
-	 * Platform's adapter manager is consulted).
-	 * </p>
-	 *
-	 * @param adapter the class to adapt to
-	 * @return the adapted object or <code>null</code>
-	 * @see IAdaptable#getAdapter(Class)
-	 * @see Platform#getAdapterManager()
-	 */
-	public Object getAdapter(Class adapter) {
-		return AdapterManager.getDefault().getAdapter(this, adapter);
-	}
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/PluginVersionIdentifier.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/PluginVersionIdentifier.java
deleted file mode 100644
index c8861e2..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/PluginVersionIdentifier.java
+++ /dev/null
@@ -1,455 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-import java.util.StringTokenizer;
-import java.util.Vector;
-import org.eclipse.core.internal.runtime.CommonMessages;
-import org.eclipse.core.internal.runtime.IRuntimeConstants;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.Version;
-
-/**
- * <p>
- * Version identifier for a plug-in. In its string representation, 
- * it consists of up to 4 tokens separated by a decimal point.
- * The first 3 tokens are positive integer numbers, the last token
- * is an uninterpreted string (no whitespace characters allowed).
- * For example, the following are valid version identifiers 
- * (as strings):
- * <ul>
- *   <li><code>0.0.0</code></li>
- *   <li><code>1.0.127564</code></li>
- *   <li><code>3.7.2.build-127J</code></li>
- *   <li><code>1.9</code> (interpreted as <code>1.9.0</code>)</li>
- *   <li><code>3</code> (interpreted as <code>3.0.0</code>)</li>
- * </ul>
- * </p>
- * <p>
- * The version identifier can be decomposed into a major, minor, 
- * service level component and qualifier components. A difference
- * in the major component is interpreted as an incompatible version
- * change. A difference in the minor (and not the major) component
- * is interpreted as a compatible version change. The service
- * level component is interpreted as a cumulative and compatible
- * service update of the minor version component. The qualifier is
- * not interpreted, other than in version comparisons. The 
- * qualifiers are compared using lexicographical string comparison.
- * </p>
- * <p>
- * Version identifiers can be matched as perfectly equal, equivalent,
- * compatible or greaterOrEqual.
- * </p>
- * <p>
- * Clients may instantiate; not intended to be subclassed by clients.
- * </p>
- * @see java.lang.String#compareTo(java.lang.String) 
- */
-
-// XXX consider deprecating in favour of  org.osgi.framework.Version.
-// if deprecated then move this class to the compatibility plugin.
-public final class PluginVersionIdentifier {
-
-	private Version version;
-	
-	private static final String SEPARATOR = "."; //$NON-NLS-1$
-	
-	/**
-	 * Creates a plug-in version identifier from its components.
-	 * 
-	 * @param major major component of the version identifier
-	 * @param minor minor component of the version identifier
-	 * @param service service update component of the version identifier
-	 */
-	public PluginVersionIdentifier(int major, int minor, int service) {
-		this(major, minor, service, null);
-	}
-
-	/**
-	 * Creates a plug-in version identifier from its components.
-	 * 
-	 * @param major major component of the version identifier
-	 * @param minor minor component of the version identifier
-	 * @param service service update component of the version identifier
-	 * @param qualifier qualifier component of the version identifier. 
-	 * Qualifier characters that are not a letter or a digit are replaced.
-	 */
-	public PluginVersionIdentifier(int major, int minor, int service, String qualifier) {
-		// Do the test outside of the assert so that they 'Policy.bind' 
-		// will not be evaluated each time (including cases when we would
-		// have passed by the assert).
-
-		if (major < 0)
-			Assert.isTrue(false, NLS.bind(CommonMessages.parse_postiveMajor, major + SEPARATOR + minor + SEPARATOR + service + SEPARATOR + qualifier));
-		if (minor < 0)
-			Assert.isTrue(false, NLS.bind(CommonMessages.parse_postiveMinor, major + SEPARATOR + minor + SEPARATOR + service + SEPARATOR + qualifier));
-		if (service < 0)
-			Assert.isTrue(false, NLS.bind(CommonMessages.parse_postiveService, major + SEPARATOR + minor + SEPARATOR + service + SEPARATOR + qualifier));
-
-		this.version = new Version(major, minor, service, qualifier);
-	}
-
-	/**
-	 * Creates a plug-in version identifier from the given string.
-	 * The string representation consists of up to 4 tokens 
-	 * separated by decimal point.
-	 * For example, the following are valid version identifiers 
-	 * (as strings):
-	 * <ul>
-	 *   <li><code>0.0.0</code></li>
-	 *   <li><code>1.0.127564</code></li>
-	 *   <li><code>3.7.2.build-127J</code></li>
-	 *   <li><code>1.9</code> (interpreted as <code>1.9.0</code>)</li>
-	 *   <li><code>3</code> (interpreted as <code>3.0.0</code>)</li>
-	 * </ul>
-	 * </p>
-	 * 
-	 * @param versionId string representation of the version identifier. 
-	 * Qualifier characters that are not a letter or a digit are replaced.
-	 */
-	public PluginVersionIdentifier(String versionId) {
-		Object[] parts = parseVersion(versionId);
-		version = new Version(((Integer) parts[0]).intValue(), ((Integer) parts[1]).intValue(), ((Integer) parts[2]).intValue(), (String) parts[3]);
-	}
-
-	/**
-	 * Validates the given string as a plug-in version identifier.
-	 * 
-	 * @param version the string to validate
-	 * @return a status object with code <code>IStatus.OK</code> if
-	 *		the given string is valid as a plug-in version identifier, otherwise a status
-	 *		object indicating what is wrong with the string
-	 * @since 2.0
-	 */
-	public static IStatus validateVersion(String version) {
-		try {
-			parseVersion(version);
-		} catch (RuntimeException e) {
-			return new Status(IStatus.ERROR, IRuntimeConstants.PI_RUNTIME, IStatus.ERROR, e.getMessage(), e);
-		}
-		return Status.OK_STATUS;
-	}
-
-	private static Object[] parseVersion(String versionId) {
-
-		// Do the test outside of the assert so that they 'Policy.bind' 
-		// will not be evaluated each time (including cases when we would
-		// have passed by the assert).
-		if (versionId == null)
-			Assert.isNotNull(null, CommonMessages.parse_emptyPluginVersion);
-		String s = versionId.trim();
-		if (s.equals("")) //$NON-NLS-1$
-			Assert.isTrue(false, CommonMessages.parse_emptyPluginVersion);
-		if (s.startsWith(SEPARATOR))
-			Assert.isTrue(false, NLS.bind(CommonMessages.parse_separatorStartVersion, s));
-		if (s.endsWith(SEPARATOR))
-			Assert.isTrue(false, NLS.bind(CommonMessages.parse_separatorEndVersion, s));
-		if (s.indexOf(SEPARATOR + SEPARATOR) != -1)
-			Assert.isTrue(false, NLS.bind(CommonMessages.parse_doubleSeparatorVersion, s));
-
-		StringTokenizer st = new StringTokenizer(s, SEPARATOR);
-		Vector elements = new Vector(4);
-
-		while (st.hasMoreTokens())
-			elements.addElement(st.nextToken());
-
-		int elementSize = elements.size();
-
-		if (elementSize <= 0)
-			Assert.isTrue(false, NLS.bind(CommonMessages.parse_oneElementPluginVersion, s));
-		if (elementSize > 4)
-			Assert.isTrue(false, NLS.bind(CommonMessages.parse_fourElementPluginVersion, s));
-
-		int[] numbers = new int[3];
-		try {
-			numbers[0] = Integer.parseInt((String) elements.elementAt(0));
-			if (numbers[0] < 0)
-				Assert.isTrue(false, NLS.bind(CommonMessages.parse_postiveMajor, s));
-		} catch (NumberFormatException nfe) {
-			Assert.isTrue(false, NLS.bind(CommonMessages.parse_numericMajorComponent, s));
-		}
-
-		try {
-			if (elementSize >= 2) {
-				numbers[1] = Integer.parseInt((String) elements.elementAt(1));
-				if (numbers[1] < 0)
-					Assert.isTrue(false, NLS.bind(CommonMessages.parse_postiveMinor, s));
-			} else
-				numbers[1] = 0;
-		} catch (NumberFormatException nfe) {
-			Assert.isTrue(false, NLS.bind(CommonMessages.parse_numericMinorComponent, s));
-		}
-
-		try {
-			if (elementSize >= 3) {
-				numbers[2] = Integer.parseInt((String) elements.elementAt(2));
-				if (numbers[2] < 0)
-					Assert.isTrue(false, NLS.bind(CommonMessages.parse_postiveService, s));
-			} else
-				numbers[2] = 0;
-		} catch (NumberFormatException nfe) {
-			Assert.isTrue(false, NLS.bind(CommonMessages.parse_numericServiceComponent, s));
-		}
-
-		// "result" is a 4-element array with the major, minor, service, and qualifier
-		Object[] result = new Object[4];
-		result[0] = new Integer(numbers[0]);
-		result[1] = new Integer(numbers[1]);
-		result[2] = new Integer(numbers[2]);
-		if (elementSize >= 4)
-			result[3] = (String) elements.elementAt(3);
-		else
-			result[3] = ""; //$NON-NLS-1$
-		return result;
-	}
-
-	/**
-	 * Compare version identifiers for equality. Identifiers are
-	 * equal if all of their components are equal.
-	 *
-	 * @param object an object to compare
-	 * @return whether or not the two objects are equal
-	 */
-	public boolean equals(Object object) {
-		if (!(object instanceof PluginVersionIdentifier))
-			return false;
-		PluginVersionIdentifier v = (PluginVersionIdentifier) object;
-		return version.equals(v.version);
-	}
-
-	/**
-	 * Returns a hash code value for the object. 
-	 *
-	 * @return an integer which is a hash code value for this object.
-	 */
-	public int hashCode() {
-		return version.hashCode();
-	}
-
-	/**
-	 * Returns the major (incompatible) component of this 
-	 * version identifier.
-	 *
-	 * @return the major version
-	 */
-	public int getMajorComponent() {
-		return version.getMajor();
-	}
-
-	/**
-	 * Returns the minor (compatible) component of this 
-	 * version identifier.
-	 *
-	 * @return the minor version
-	 */
-	public int getMinorComponent() {
-		return version.getMinor();
-	}
-
-	/**
-	 * Returns the service level component of this 
-	 * version identifier.
-	 *
-	 * @return the service level
-	 */
-	public int getServiceComponent() {
-		return version.getMicro();
-	}
-
-	/**
-	 * Returns the qualifier component of this 
-	 * version identifier.
-	 *
-	 * @return the qualifier
-	 */
-	public String getQualifierComponent() {
-		return version.getQualifier();
-	}
-
-	/**
-	 * Compares two version identifiers to see if this one is
-	 * greater than or equal to the argument.
-	 * <p>
-	 * A version identifier is considered to be greater than or equal
-	 * if its major component is greater than the argument major 
-	 * component, or the major components are equal and its minor component
-	 * is greater than the argument minor component, or the
-	 * major and minor components are equal and its service component is
-	 * greater than the argument service component, or the major, minor and
-	 * service components are equal and the qualifier component is
-	 * greater than the argument qualifier component (using lexicographic
-	 * string comparison), or all components are equal.
-	 * </p>
-	 *
-	 * @param id the other version identifier
-	 * @return <code>true</code> is this version identifier
-	 *    is compatible with the given version identifier, and
-	 *    <code>false</code> otherwise
-	 * @since 2.0
-	 */
-	public boolean isGreaterOrEqualTo(PluginVersionIdentifier id) {
-		if (id == null)
-			return false;
-		if (getMajorComponent() > id.getMajorComponent())
-			return true;
-		if ((getMajorComponent() == id.getMajorComponent()) && (getMinorComponent() > id.getMinorComponent()))
-			return true;
-		if ((getMajorComponent() == id.getMajorComponent()) && (getMinorComponent() == id.getMinorComponent()) && (getServiceComponent() > id.getServiceComponent()))
-			return true;
-		if ((getMajorComponent() == id.getMajorComponent()) && (getMinorComponent() == id.getMinorComponent()) && (getServiceComponent() == id.getServiceComponent()) && (getQualifierComponent().compareTo(id.getQualifierComponent()) >= 0))
-			return true;
-		else
-			return false;
-	}
-
-	/**
-	 * Compares two version identifiers for compatibility.
-	 * <p>
-	 * A version identifier is considered to be compatible if its major 
-	 * component equals to the argument major component, and its minor component
-	 * is greater than or equal to the argument minor component.
-	 * If the minor components are equal, than the service level of the
-	 * version identifier must be greater than or equal to the service level
-	 * of the argument identifier. If the service levels are equal, the two 
-	 * version identifiers are considered to be equivalent if this qualifier is 
-	 * greater or equal to the qualifier of the argument (using lexicographic
-	 * string comparison).
-	 * </p>
-	 *
-	 * @param id the other version identifier
-	 * @return <code>true</code> is this version identifier
-	 *    is compatible with the given version identifier, and
-	 *    <code>false</code> otherwise
-	 */
-	public boolean isCompatibleWith(PluginVersionIdentifier id) {
-		if (id == null)
-			return false;
-		if (getMajorComponent() != id.getMajorComponent())
-			return false;
-		if (getMinorComponent() > id.getMinorComponent())
-			return true;
-		if (getMinorComponent() < id.getMinorComponent())
-			return false;
-		if (getServiceComponent() > id.getServiceComponent())
-			return true;
-		if (getServiceComponent() < id.getServiceComponent())
-			return false;
-		if (getQualifierComponent().compareTo(id.getQualifierComponent()) >= 0)
-			return true;
-		else
-			return false;
-	}
-
-	/**
-	 * Compares two version identifiers for equivalency.
-	 * <p>
-	 * Two version identifiers are considered to be equivalent if their major 
-	 * and minor component equal and are at least at the same service level 
-	 * as the argument. If the service levels are equal, the two version
-	 * identifiers are considered to be equivalent if this qualifier is 
-	 * greater or equal to the qualifier of the argument (using lexicographic
-	 * string comparison).
-	 * 
-	 * </p>
-	 *
-	 * @param id the other version identifier
-	 * @return <code>true</code> is this version identifier
-	 *    is equivalent to the given version identifier, and
-	 *    <code>false</code> otherwise
-	 */
-	public boolean isEquivalentTo(PluginVersionIdentifier id) {
-		if (id == null)
-			return false;
-		if (getMajorComponent() != id.getMajorComponent())
-			return false;
-		if (getMinorComponent() != id.getMinorComponent())
-			return false;
-		if (getServiceComponent() > id.getServiceComponent())
-			return true;
-		if (getServiceComponent() < id.getServiceComponent())
-			return false;
-		if (getQualifierComponent().compareTo(id.getQualifierComponent()) >= 0)
-			return true;
-		else
-			return false;
-	}
-
-	/**
-	 * Compares two version identifiers for perfect equality.
-	 * <p>
-	 * Two version identifiers are considered to be perfectly equal if their
-	 * major, minor, service and qualifier components are equal
-	 * </p>
-	 *
-	 * @param id the other version identifier
-	 * @return <code>true</code> is this version identifier
-	 *    is perfectly equal to the given version identifier, and
-	 *    <code>false</code> otherwise
-	 * @since 2.0
-	 */
-	public boolean isPerfect(PluginVersionIdentifier id) {
-		if (id == null)
-			return false;
-		if ((getMajorComponent() != id.getMajorComponent()) || (getMinorComponent() != id.getMinorComponent()) || (getServiceComponent() != id.getServiceComponent()) || (!getQualifierComponent().equals(id.getQualifierComponent())))
-			return false;
-		else
-			return true;
-	}
-
-	/**
-	 * Compares two version identifiers for order using multi-decimal
-	 * comparison. 
-	 *
-	 * @param id the other version identifier
-	 * @return <code>true</code> is this version identifier
-	 *    is greater than the given version identifier, and
-	 *    <code>false</code> otherwise
-	 */
-	public boolean isGreaterThan(PluginVersionIdentifier id) {
-
-		if (id == null) {
-			if (getMajorComponent() == 0 && getMinorComponent() == 0 && getServiceComponent() == 0 && getQualifierComponent().equals("")) //$NON-NLS-1$
-				return false;
-			else
-				return true;
-		}
-
-		if (getMajorComponent() > id.getMajorComponent())
-			return true;
-		if (getMajorComponent() < id.getMajorComponent())
-			return false;
-		if (getMinorComponent() > id.getMinorComponent())
-			return true;
-		if (getMinorComponent() < id.getMinorComponent())
-			return false;
-		if (getServiceComponent() > id.getServiceComponent())
-			return true;
-		if (getServiceComponent() < id.getServiceComponent())
-			return false;
-		if (getQualifierComponent().compareTo(id.getQualifierComponent()) > 0)
-			return true;
-		else
-			return false;
-
-	}
-
-	/**
-	 * Returns the string representation of this version identifier. 
-	 * The result satisfies
-	 * <code>vi.equals(new PluginVersionIdentifier(vi.toString()))</code>.
-	 *
-	 * @return the string representation of this plug-in version identifier
-	 */
-	public String toString() {
-		return version.toString();
-	}
-
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/ProgressMonitorWrapper.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/ProgressMonitorWrapper.java
deleted file mode 100644
index 5b7117c..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/ProgressMonitorWrapper.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-/**
- * An abstract wrapper around a progress monitor which,
- * unless overridden, forwards <code>IProgressMonitor</code>
- * and <code>IProgressMonitorWithBlocking</code> methods to the wrapped progress monitor.
- * <p>
- * Clients may subclass.
- * </p>
- */
-public abstract class ProgressMonitorWrapper implements IProgressMonitor, IProgressMonitorWithBlocking {
-
-	/** The wrapped progress monitor. */
-	private IProgressMonitor progressMonitor;
-
-	/** 
-	 * Creates a new wrapper around the given monitor.
-	 *
-	 * @param monitor the progress monitor to forward to
-	 */
-	protected ProgressMonitorWrapper(IProgressMonitor monitor) {
-		Assert.isNotNull(monitor);
-		progressMonitor = monitor;
-	}
-
-	/** 
-	 * This implementation of a <code>IProgressMonitor</code>
-	 * method forwards to the wrapped progress monitor.
-	 * Clients may override this method to do additional
-	 * processing.
-	 *
-	 * @see IProgressMonitor#beginTask(String, int)
-	 */
-	public void beginTask(String name, int totalWork) {
-		progressMonitor.beginTask(name, totalWork);
-	}
-
-	/**
-	 * This implementation of a <code>IProgressMonitorWithBlocking</code>
-	 * method forwards to the wrapped progress monitor.
-	 * Clients may override this method to do additional
-	 * processing.
-	 *
-	 * @see IProgressMonitorWithBlocking#clearBlocked()
-	 * @since 3.0
-	 */
-	public void clearBlocked() {
-		if (progressMonitor instanceof IProgressMonitorWithBlocking)
-			((IProgressMonitorWithBlocking) progressMonitor).clearBlocked();
-	}
-
-	/**
-	 * This implementation of a <code>IProgressMonitor</code>
-	 * method forwards to the wrapped progress monitor.
-	 * Clients may override this method to do additional
-	 * processing.
-	 *
-	 * @see IProgressMonitor#done()
-	 */
-	public void done() {
-		progressMonitor.done();
-	}
-
-	/**
-	 * Returns the wrapped progress monitor.
-	 *
-	 * @return the wrapped progress monitor
-	 */
-	public IProgressMonitor getWrappedProgressMonitor() {
-		return progressMonitor;
-	}
-
-	/**
-	 * This implementation of a <code>IProgressMonitor</code>
-	 * method forwards to the wrapped progress monitor.
-	 * Clients may override this method to do additional
-	 * processing.
-	 *
-	 * @see IProgressMonitor#internalWorked(double)
-	 */
-	public void internalWorked(double work) {
-		progressMonitor.internalWorked(work);
-	}
-
-	/**
-	 * This implementation of a <code>IProgressMonitor</code>
-	 * method forwards to the wrapped progress monitor.
-	 * Clients may override this method to do additional
-	 * processing.
-	 *
-	 * @see IProgressMonitor#isCanceled()
-	 */
-	public boolean isCanceled() {
-		return progressMonitor.isCanceled();
-	}
-
-	/**
-	 * This implementation of a <code>IProgressMonitorWithBlocking</code>
-	 * method forwards to the wrapped progress monitor.
-	 * Clients may override this method to do additional
-	 * processing.
-	 *
-	 * @see IProgressMonitorWithBlocking#setBlocked(IStatus)
-	 * @since 3.0
-	 */
-	public void setBlocked(IStatus reason) {
-		if (progressMonitor instanceof IProgressMonitorWithBlocking)
-			((IProgressMonitorWithBlocking) progressMonitor).setBlocked(reason);
-	}
-
-	/**
-	 * This implementation of a <code>IProgressMonitor</code>
-	 * method forwards to the wrapped progress monitor.
-	 * Clients may override this method to do additional
-	 * processing.
-	 *
-	 * @see IProgressMonitor#setCanceled(boolean)
-	 */
-	public void setCanceled(boolean b) {
-		progressMonitor.setCanceled(b);
-	}
-
-	/**
-	 * This implementation of a <code>IProgressMonitor</code>
-	 * method forwards to the wrapped progress monitor.
-	 * Clients may override this method to do additional
-	 * processing.
-	 *
-	 * @see IProgressMonitor#setTaskName(String)
-	 */
-	public void setTaskName(String name) {
-		progressMonitor.setTaskName(name);
-	}
-
-	/**
-	 * This implementation of a <code>IProgressMonitor</code>
-	 * method forwards to the wrapped progress monitor.
-	 * Clients may override this method to do additional
-	 * processing.
-	 *
-	 * @see IProgressMonitor#subTask(String)
-	 */
-	public void subTask(String name) {
-		progressMonitor.subTask(name);
-	}
-
-	/**
-	 * This implementation of a <code>IProgressMonitor</code>
-	 * method forwards to the wrapped progress monitor.
-	 * Clients may override this method to do additional
-	 * processing.
-	 *
-	 * @see IProgressMonitor#worked(int)
-	 */
-	public void worked(int work) {
-		progressMonitor.worked(work);
-	}
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/QualifiedName.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/QualifiedName.java
deleted file mode 100644
index 893faa7..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/QualifiedName.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-/**
- * Qualified names are two-part names: qualifier and local name.
- * The qualifier must be in URI form (see RFC2396).  
- * Note however that the qualifier may be <code>null</code> if
- * the default name space is being used.  The empty string is not 
- * a valid local name.
- * <p>
- * This class is not intended to be subclassed by clients.
- * </p>
- */
-public final class QualifiedName {
-
-	/** Qualifier part (potentially <code>null</code>). */
-	/*package*/
-	String qualifier = null;
-
-	/** Local name part. */
-	/*package*/
-	String localName = null;
-
-	/**
-	 * Creates and returns a new qualified name with the given qualifier
-	 * and local name.  The local name must not be the empty string.
-	 * The qualifier may be <code>null</code>.
-	 * <p>
-	 * Clients may instantiate.
-	 * </p>
-	 * @param qualifier the qualifier string, or <code>null</code>
-	 * @param localName the local name string
-	 */
-	public QualifiedName(String qualifier, String localName) {
-		Assert.isLegal(localName != null && localName.length() != 0);
-		this.qualifier = qualifier;
-		this.localName = localName;
-	}
-
-	/**
-	 * Returns whether this qualified name is equivalent to the given object.
-	 * <p>
-	 * Qualified names are equal if and only if they have the same
-	 * qualified parts and local parts.
-	 * Qualified names are not equal to objects other than qualified names.
-	 * </p>
-	 *
-	 * @param obj the object to compare to
-	 * @return <code>true</code> if these are equivalent qualified
-	 *    names, and <code>false</code> otherwise
-	 */
-	public boolean equals(Object obj) {
-		if (obj == this) {
-			return true;
-		}
-		if (!(obj instanceof QualifiedName)) {
-			return false;
-		}
-		QualifiedName qName = (QualifiedName) obj;
-		/* There may or may not be a qualifier */
-		if (qualifier == null && qName.getQualifier() != null) {
-			return false;
-		}
-		if (qualifier != null && !qualifier.equals(qName.getQualifier())) {
-			return false;
-		}
-		return localName.equals(qName.getLocalName());
-	}
-
-	/**
-	 * Returns the local part of this name.
-	 *
-	 * @return the local name string
-	 */
-	public String getLocalName() {
-		return localName;
-	}
-
-	/**
-	 * Returns the qualifier part for this qualified name, or <code>null</code>
-	 * if none.
-	 *
-	 * @return the qualifier string, or <code>null</code>
-	 */
-	public String getQualifier() {
-		return qualifier;
-	}
-
-	/* (Intentionally omitted from javadoc)
-	 * Implements the method <code>Object.hashCode</code>.
-	 * 
-	 * Returns the hash code for this qualified name.
-	 */
-	public int hashCode() {
-		return (qualifier == null ? 0 : qualifier.hashCode()) + localName.hashCode();
-	}
-
-	/**
-	 * Converts this qualified name into a string, suitable for 
-	 * debug purposes only.
-	 */
-	public String toString() {
-		return (getQualifier() == null ? "" : getQualifier() + ':') + getLocalName(); //$NON-NLS-1$
-	}
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/SafeRunner.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/SafeRunner.java
deleted file mode 100644
index 90f9db3..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/SafeRunner.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-import org.eclipse.core.internal.runtime.*;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * Runs the given ISafeRunnable in a protected mode: exceptions
- * thrown in the runnable are logged and passed to the runnable's
- * exception handler.  Such exceptions are not rethrown by this method.
- * 
- * Note that this class requires presence of OSGi.
- * 
- * @since org.eclipse.equinox.common 1.0
- */
-public final class SafeRunner {
-
-	/**
-	 * Runs the given runnable in a protected mode.   Exceptions
-	 * thrown in the runnable are logged and passed to the runnable's
-	 * exception handler.  Such exceptions are not rethrown by this method.
-	 *
-	 * @param code the runnable to run
-	 */
-	public static void run(ISafeRunnable code) {
-		Assert.isNotNull(code);
-		try {
-			code.run();
-		} catch (Exception e) {
-			handleException(code, e);
-		} catch (LinkageError e) {
-			handleException(code, e);
-		}
-	}
-
-	private static void handleException(ISafeRunnable code, Throwable e) {
-		if (!(e instanceof OperationCanceledException)) {
-			// try to obtain the correct plug-in id for the bundle providing the safe runnable 
-			String pluginId = CommonOSGiUtils.getDefault().getBundleId(code);
-			if (pluginId == null)
-				pluginId = IRuntimeConstants.NAME;
-			String message = NLS.bind(CommonMessages.meta_pluginProblems, pluginId);
-			IStatus status;
-			if (e instanceof CoreException) {
-				status = new MultiStatus(pluginId, IRuntimeConstants.PLUGIN_ERROR, message, e);
-				((MultiStatus) status).merge(((CoreException) e).getStatus());
-			} else {
-				status = new Status(IStatus.ERROR, pluginId, IRuntimeConstants.PLUGIN_ERROR, message, e);
-			}
-			// Make sure user sees the exception: if the log is empty, log the exceptions on stderr 
-			if (!RuntimeLog.isEmpty())
-				RuntimeLog.log(status);
-			else
-				e.printStackTrace();
-		}
-		code.handleException(e);
-	}
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/Status.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/Status.java
deleted file mode 100644
index 70a3642..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/Status.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-import org.eclipse.core.internal.runtime.CommonMessages;
-import org.eclipse.core.internal.runtime.IRuntimeConstants;
-
-/**
- * A concrete status implementation, suitable either for 
- * instantiating or subclassing.
- */
-public class Status implements IStatus {
-
-	/**
-	 * A standard OK status with an "ok"  message.
-	 *
-	 * @since 3.0
-	 */
-	public static final IStatus OK_STATUS = new Status(OK, IRuntimeConstants.PI_RUNTIME, OK, CommonMessages.ok, null);
-	/**
-	 * A standard CANCEL status with no message.
-	 * 
-	 * @since 3.0
-	 */
-	public static final IStatus CANCEL_STATUS = new Status(CANCEL, IRuntimeConstants.PI_RUNTIME, 1, "", null); //$NON-NLS-1$
-	/**
-	 * The severity. One of
-	 * <ul>
-	 * <li><code>CANCEL</code></li>
-	 * <li><code>ERROR</code></li>
-	 * <li><code>WARNING</code></li>
-	 * <li><code>INFO</code></li>
-	 * <li>or <code>OK</code> (0)</li>
-	 * </ul>
-	 */
-	private int severity = OK;
-
-	/** Unique identifier of plug-in.
-	 */
-	private String pluginId;
-
-	/** Plug-in-specific status code.
-	 */
-	private int code;
-
-	/** Message, localized to the current locale.
-	 */
-	private String message;
-
-	/** Wrapped exception, or <code>null</code> if none.
-	 */
-	private Throwable exception = null;
-
-	/** Constant to avoid generating garbage.
-	 */
-	private static final IStatus[] theEmptyStatusArray = new IStatus[0];
-
-	/**
-	 * Creates a new status object.  The created status has no children.
-	 *
-	 * @param severity the severity; one of <code>OK</code>, <code>ERROR</code>, 
-	 * <code>INFO</code>, <code>WARNING</code>,  or <code>CANCEL</code>
-	 * @param pluginId the unique identifier of the relevant plug-in
-	 * @param code the plug-in-specific status code, or <code>OK</code>
-	 * @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 Status(int severity, String pluginId, int code, String message, Throwable exception) {
-		setSeverity(severity);
-		setPlugin(pluginId);
-		setCode(code);
-		setMessage(message);
-		setException(exception);
-	}
-
-	/* (Intentionally not javadoc'd)
-	 * Implements the corresponding method on <code>IStatus</code>.
-	 */
-	public IStatus[] getChildren() {
-		return theEmptyStatusArray;
-	}
-
-	/* (Intentionally not javadoc'd)
-	 * Implements the corresponding method on <code>IStatus</code>.
-	 */
-	public int getCode() {
-		return code;
-	}
-
-	/* (Intentionally not javadoc'd)
-	 * Implements the corresponding method on <code>IStatus</code>.
-	 */
-	public Throwable getException() {
-		return exception;
-	}
-
-	/* (Intentionally not javadoc'd)
-	 * Implements the corresponding method on <code>IStatus</code>.
-	 */
-	public String getMessage() {
-		return message;
-	}
-
-	/* (Intentionally not javadoc'd)
-	 * Implements the corresponding method on <code>IStatus</code>.
-	 */
-	public String getPlugin() {
-		return pluginId;
-	}
-
-	/* (Intentionally not javadoc'd)
-	 * Implements the corresponding method on <code>IStatus</code>.
-	 */
-	public int getSeverity() {
-		return severity;
-	}
-
-	/* (Intentionally not javadoc'd)
-	 * Implements the corresponding method on <code>IStatus</code>.
-	 */
-	public boolean isMultiStatus() {
-		return false;
-	}
-
-	/* (Intentionally not javadoc'd)
-	 * Implements the corresponding method on <code>IStatus</code>.
-	 */
-	public boolean isOK() {
-		return severity == OK;
-	}
-
-	/* (Intentionally not javadoc'd)
-	 * Implements the corresponding method on <code>IStatus</code>.
-	 */
-	public boolean matches(int severityMask) {
-		return (severity & severityMask) != 0;
-	}
-
-	/**
-	 * Sets the status code.
-	 *
-	 * @param code the plug-in-specific status code, or <code>OK</code>
-	 */
-	protected void setCode(int code) {
-		this.code = code;
-	}
-
-	/**
-	 * Sets the exception.
-	 *
-	 * @param exception a low-level exception, or <code>null</code> if not
-	 *    applicable 
-	 */
-	protected void setException(Throwable exception) {
-		this.exception = exception;
-	}
-
-	/**
-	 * Sets the message.
-	 *
-	 * @param message a human-readable message, localized to the
-	 *    current locale
-	 */
-	protected void setMessage(String message) {
-		Assert.isLegal(message != null);
-		this.message = message;
-	}
-
-	/**
-	 * Sets the plug-in id.
-	 *
-	 * @param pluginId the unique identifier of the relevant plug-in
-	 */
-	protected void setPlugin(String pluginId) {
-		Assert.isLegal(pluginId != null && pluginId.length() > 0);
-		this.pluginId = pluginId;
-	}
-
-	/**
-	 * Sets the severity.
-	 *
-	 * @param severity the severity; one of <code>OK</code>, <code>ERROR</code>, 
-	 * <code>INFO</code>, <code>WARNING</code>,  or <code>CANCEL</code>
-	 */
-	protected void setSeverity(int severity) {
-		Assert.isLegal(severity == OK || severity == ERROR || severity == WARNING || severity == INFO || severity == CANCEL);
-		this.severity = severity;
-	}
-
-	/**
-	 * Returns a string representation of the status, suitable 
-	 * for debugging purposes only.
-	 */
-	public String toString() {
-		StringBuffer buf = new StringBuffer();
-		buf.append("Status "); //$NON-NLS-1$
-		if (severity == OK) {
-			buf.append("OK"); //$NON-NLS-1$
-		} else if (severity == ERROR) {
-			buf.append("ERROR"); //$NON-NLS-1$
-		} else if (severity == WARNING) {
-			buf.append("WARNING"); //$NON-NLS-1$
-		} else if (severity == INFO) {
-			buf.append("INFO"); //$NON-NLS-1$
-		} else if (severity == CANCEL) {
-			buf.append("CANCEL"); //$NON-NLS-1$
-		} else {
-			buf.append("severity="); //$NON-NLS-1$
-			buf.append(severity);
-		}
-		buf.append(": "); //$NON-NLS-1$
-		buf.append(pluginId);
-		buf.append(" code="); //$NON-NLS-1$
-		buf.append(code);
-		buf.append(' ');
-		buf.append(message);
-		buf.append(' ');
-		buf.append(exception);
-		return buf.toString();
-	}
-}
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/SubProgressMonitor.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/SubProgressMonitor.java
deleted file mode 100644
index 4257710..0000000
--- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/runtime/SubProgressMonitor.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime;
-
-/**
- * A progress monitor that uses a given amount of work ticks
- * from a parent monitor. It can be used as follows:
- * <pre>
- *     try {
- *         pm.beginTask("Main Task", 100);
- *         doSomeWork(pm, 30);
- *         SubProgressMonitor subMonitor= new SubProgressMonitor(pm, 40);
- *         try {
- *             subMonitor.beginTask("", 300);
- *             doSomeWork(subMonitor, 300);
- *         } finally {
- *             subMonitor.done();
- *         }
- *         doSomeWork(pm, 30);
- *     } finally {
- *         pm.done();
- *     }
- * </pre>
- * <p>
- * This class may be instantiated or subclassed by clients.
- * </p>
- */
-public class SubProgressMonitor extends ProgressMonitorWrapper {
-
-	/**
-	 * Style constant indicating that calls to <code>subTask</code>
-	 * should not have any effect.
-	 *
-	 * @see #SubProgressMonitor(IProgressMonitor,int,int)
-	 */
-	public static final int SUPPRESS_SUBTASK_LABEL = 1 << 1;
-	/**
-	 * Style constant indicating that the main task label 
-	 * should be prepended to the subtask label.
-	 *
-	 * @see #SubProgressMonitor(IProgressMonitor,int,int)
-	 */
-	public static final int PREPEND_MAIN_LABEL_TO_SUBTASK = 1 << 2;
-
-	private int parentTicks = 0;
-	private double sentToParent = 0.0;
-	private double scale = 0.0;
-	private int nestedBeginTasks = 0;
-	private boolean usedUp = false;
-	private boolean hasSubTask = false;
-	private int style;
-	private String mainTaskLabel;
-
-	/**
-	 * Creates a new sub-progress monitor for the given monitor. The sub 
-	 * progress monitor uses the given number of work ticks from its 
-	 * parent monitor.
-	 *
-	 * @param monitor the parent progress monitor
-	 * @param ticks the number of work ticks allocated from the
-	 *    parent monitor
-	 */
-	public SubProgressMonitor(IProgressMonitor monitor, int ticks) {
-		this(monitor, ticks, 0);
-	}
-
-	/**
-	 * Creates a new sub-progress monitor for the given monitor. The sub 
-	 * progress monitor uses the given number of work ticks from its 
-	 * parent monitor.
-	 *
-	 * @param monitor the parent progress monitor
-	 * @param ticks the number of work ticks allocated from the
-	 *    parent monitor
-	 * @param style one of
-	 *    <ul>
-	 *    <li> <code>SUPPRESS_SUBTASK_LABEL</code> </li>
-	 *    <li> <code>PREPEND_MAIN_LABEL_TO_SUBTASK</code> </li>
-	 *    </ul>
-	 * @see #SUPPRESS_SUBTASK_LABEL
-	 * @see #PREPEND_MAIN_LABEL_TO_SUBTASK
-	 */
-	public SubProgressMonitor(IProgressMonitor monitor, int ticks, int style) {
-		super(monitor);
-		this.parentTicks = ticks;
-		this.style = style;
-	}
-
-	/* (Intentionally not javadoc'd)
-	 * Implements the method <code>IProgressMonitor.beginTask</code>.
-	 *
-	 * Starts a new main task. Since this progress monitor is a sub
-	 * progress monitor, the given name will NOT be used to update
-	 * the progress bar's main task label. That means the given 
-	 * string will be ignored. If style <code>PREPEND_MAIN_LABEL_TO_SUBTASK
-	 * <code> is specified, then the given string will be prepended to
-	 * every string passed to <code>subTask(String)</code>.
-	 */
-	public void beginTask(String name, int totalWork) {
-		nestedBeginTasks++;
-		// Ignore nested begin task calls.
-		if (nestedBeginTasks > 1) {
-			return;
-		}
-		// be safe:  if the argument would cause math errors (zero or 
-		// negative), just use 0 as the scale.  This disables progress for
-		// this submonitor. 
-		scale = totalWork <= 0 ? 0 : (double) parentTicks / (double) totalWork;
-		if ((style & PREPEND_MAIN_LABEL_TO_SUBTASK) != 0) {
-			mainTaskLabel = name;
-		}
-	}
-
-	/* (Intentionally not javadoc'd)
-	 * Implements the method <code>IProgressMonitor.done</code>.
-	 */
-	public void done() {
-		// Ignore if more done calls than beginTask calls or if we are still
-		// in some nested beginTasks
-		if (nestedBeginTasks == 0 || --nestedBeginTasks > 0)
-			return;
-		// Send any remaining ticks and clear out the subtask text
-		double remaining = parentTicks - sentToParent;
-		if (remaining > 0)
-			super.internalWorked(remaining);
-		//clear the sub task if there was one
-		if (hasSubTask)
-			subTask(""); //$NON-NLS-1$
-		sentToParent = 0;
-	}
-
-	/* (Intentionally not javadoc'd)
-	 * Implements the internal method <code>IProgressMonitor.internalWorked</code>.
-	 */
-	public void internalWorked(double work) {
-		if (usedUp || nestedBeginTasks != 1) {
-			return;
-		}
-
-		double realWork = scale * work;
-		super.internalWorked(realWork);
-		sentToParent += realWork;
-		if (sentToParent >= parentTicks) {
-			usedUp = true;
-		}
-	}
-
-	/* (Intentionally not javadoc'd)
-	 * Implements the method <code>IProgressMonitor.subTask</code>.
-	 */
-	public void subTask(String name) {
-		if ((style & SUPPRESS_SUBTASK_LABEL) != 0) {
-			return;
-		}
-		hasSubTask = true;
-		String label = name;
-		if ((style & PREPEND_MAIN_LABEL_TO_SUBTASK) != 0 && mainTaskLabel != null && mainTaskLabel.length() > 0) {
-			label = mainTaskLabel + ' ' + label;
-		}
-		super.subTask(label);
-	}
-
-	/* (Intentionally not javadoc'd)
-	 * Implements the method <code>IProgressMonitor.worked</code>.
-	 */
-	public void worked(int work) {
-		internalWorked(work);
-	}
-}
diff --git a/bundles/org.eclipse.equinox.device/.classpath b/bundles/org.eclipse.equinox.device/.classpath
deleted file mode 100644
index 065ac06..0000000
--- a/bundles/org.eclipse.equinox.device/.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.equinox.device/.cvsignore b/bundles/org.eclipse.equinox.device/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/bundles/org.eclipse.equinox.device/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/bundles/org.eclipse.equinox.device/.project b/bundles/org.eclipse.equinox.device/.project
deleted file mode 100644
index 5d5c431..0000000
--- a/bundles/org.eclipse.equinox.device/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.equinox.device</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.equinox.device/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.device/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index c8df024..0000000
--- a/bundles/org.eclipse.equinox.device/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,49 +0,0 @@
-#Fri Dec 16 09:19:41 CST 2005
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-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.problem.varargsArgumentNeedCast=warning
diff --git a/bundles/org.eclipse.equinox.device/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.device/META-INF/MANIFEST.MF
deleted file mode 100644
index 9d73e9b..0000000
--- a/bundles/org.eclipse.equinox.device/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,15 +0,0 @@
-Bundle-ManifestVersion: 2
-Bundle-Name: %bundleName
-Bundle-Version: 1.0.0.qualifier
-Bundle-Activator: org.eclipse.equinox.device.Activator
-Bundle-SymbolicName: org.eclipse.equinox.device
-Bundle-Vendor: %bundleVendor
-Bundle-Copyright: %bundleCopyright
-Bundle-Localization: plugin
-Import-Service: org.osgi.service.log.LogService
-Import-Package: org.osgi.framework;version="1.2",
- org.osgi.service.device,
- org.osgi.service.log;version="1.2",
- org.osgi.util.tracker,
- org.eclipse.osgi.util
-Export-Package: org.eclipse.equinox.device; x-internal:=true
diff --git a/bundles/org.eclipse.equinox.device/about.html b/bundles/org.eclipse.equinox.device/about.html
deleted file mode 100644
index b2f1e6b..0000000
--- a/bundles/org.eclipse.equinox.device/about.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
-<!-- saved from url=(0043)http://www.eclipse.org/legal/epl/about.html -->
-<HTML><HEAD><TITLE>About</TITLE>
-<META http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-<META content="MSHTML 6.00.2800.1498" name=GENERATOR></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 
-("Content"). Unless otherwise indicated below, the Content is provided to you 
-under the terms and conditions of the Eclipse Public License Version 1.0 
-("EPL"). 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, "Program" 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 ("Redistributor") 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>
diff --git a/bundles/org.eclipse.equinox.device/build.properties b/bundles/org.eclipse.equinox.device/build.properties
deleted file mode 100644
index 3da785a..0000000
--- a/bundles/org.eclipse.equinox.device/build.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-###############################################################################
-# Copyright (c) 2005 IBM Corporation.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = META-INF/,\
-               plugin.properties,\
-               about.html,\
-               .
-src.includes = about.html
-source.. = src/
-output.. = bin/
diff --git a/bundles/org.eclipse.equinox.device/plugin.properties b/bundles/org.eclipse.equinox.device/plugin.properties
deleted file mode 100644
index 86742fd..0000000
--- a/bundles/org.eclipse.equinox.device/plugin.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-###############################################################################
-# Copyright (c) 2005 IBM Corporation.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bundleVendor = Eclipse.org
-bundleName = Device Access Service
-bundleCopyright = Copyright (c) IBM Corp. 1999, 2005
diff --git a/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/Activator.java b/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/Activator.java
deleted file mode 100644
index ac4f908..0000000
--- a/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/Activator.java
+++ /dev/null
@@ -1,420 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.equinox.device;
-
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-import org.osgi.util.tracker.ServiceTracker;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-
-/**
- * DeviceManager bundle. This bundle implements the OSGi Device Access 1.1
- * specification.
- *
- * This implementation does not include the optimizations in section
- * 8.7.4 of the OSGi SP R2 spec.
- *
- */
-public class Activator implements BundleActivator, ServiceTrackerCustomizer, FrameworkListener, Runnable {
-	protected final static boolean DEBUG = false;
-
-	/** DeviceManager BundleContext */
-	protected BundleContext context;
-
-	/** LogTracker object */
-	protected LogTracker log;
-
-	/** if false the thread must terminate */
-	protected volatile boolean running;
-
-	/** DeviceManager thread */
-	protected Thread thread;
-
-	/** DriverTracker for Driver services. */
-	protected DriverTracker drivers;
-
-	/** Tracker for DriverLocator services */
-	protected DriverLocatorTracker locators;
-
-	/** Tracker for DriverSelector services */
-	protected DriverSelectorTracker selectors;
-
-	/** ServiceTracker object for device services */
-	protected ServiceTracker devices;
-
-	/** filter for Device services */
-	protected Filter deviceFilter;
-
-	/** filter for Driver services */
-	protected Filter driverFilter;
-
-	/**
-	 * Linked List item
-	 */
-	static class DeviceService {
-		/** object for this item */
-		final DeviceTracker device;
-		/** next item in event queue */
-		DeviceService next;
-
-		/**
-		 * Constructor for work queue item
-		 *
-		 * @param o Object for this event
-		 */
-		DeviceService(DeviceTracker device) {
-			this.device = device;
-			next = null;
-		}
-	}
-
-	/** item at the head of the event queue */
-	private DeviceService head;
-	/** item at the tail of the event queue */
-	private DeviceService tail;
-
-	/** number of milliseconds to wait before refining idle Device services */
-	protected long updatewait;
-
-	/** set to true by DriverTracker when a Driver Service is registered */
-	protected volatile boolean driverServiceRegistered;
-
-	/**
-	 * Create a DeviceManager object.
-	 *
-	 */
-
-	public Activator() {
-		super();
-	}
-
-	/**
-	 * Start the Device Manager.
-	 *
-	 * @param context The device manager's bundle context
-	 */
-
-	public void start(BundleContext context) throws Exception {
-		this.context = context;
-		running = false;
-
-		log = new LogTracker(context, System.err);
-
-		try {
-			deviceFilter = context.createFilter("(|(" + org.osgi.framework.Constants.OBJECTCLASS + "=" + DeviceTracker.clazz + ////-1$ ////-2$ //$NON-NLS-1$ //$NON-NLS-2$
-					")(" + org.osgi.service.device.Constants.DEVICE_CATEGORY + "=*))"); //$NON-NLS-1$ //$NON-NLS-2$
-
-			driverFilter = context.createFilter("(" + org.osgi.framework.Constants.OBJECTCLASS + "=" + DriverTracker.clazz + ")"); ////-1$ ////-2$ ////-3$ //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		} catch (InvalidSyntaxException e) {
-			log.log(log.LOG_ERROR, NLS.bind(DeviceMsg.Unable_to_create_Filter_for_DeviceManager, e)); ////-1$
-			throw e;
-		}
-
-		updatewait = 5 * 1000L;
-
-		String prop = context.getProperty("org.eclipse.equinox.device.updatewait"); //$NON-NLS-1$
-
-		if (prop != null) {
-			try {
-				updatewait = Long.parseLong(prop) * 1000L;
-			} catch (NumberFormatException e) {
-			}
-		}
-
-		Bundle systemBundle = context.getBundle(0);
-
-		if ((systemBundle != null) && ((systemBundle.getState() & systemBundle.STARTING) != 0)) { /* if the system bundle is starting */
-			context.addFrameworkListener(this);
-		} else {
-			startDeviceManager();
-		}
-
-		log.log(log.LOG_INFO, DeviceMsg.DeviceManager_started);
-	}
-
-	/**
-	 * Receive notification of a general framework event.
-	 *
-	 * @param event The FrameworkEvent.
-	 */
-	public void frameworkEvent(FrameworkEvent event) {
-		switch (event.getType()) {
-			case FrameworkEvent.STARTED : {
-				context.removeFrameworkListener(this);
-
-				try {
-					startDeviceManager();
-				} catch (Throwable t) {
-					log.log(log.LOG_ERROR, NLS.bind(DeviceMsg.DeviceManager_has_thrown_an_error, t)); ////-1$
-				}
-
-				break;
-			}
-		}
-	}
-
-	/**
-	 * Start the DeviceManager thread.
-	 *
-	 */
-	public void startDeviceManager() {
-		if (!running) {
-			head = null;
-			tail = null;
-
-			locators = new DriverLocatorTracker(this);
-
-			selectors = new DriverSelectorTracker(this);
-
-			drivers = new DriverTracker(this);
-
-			devices = new ServiceTracker(context, deviceFilter, this);
-			devices.open();
-
-			running = true;
-			driverServiceRegistered = false;
-
-			thread = (new SecureAction()).createThread(this, "DeviceManager"); //$NON-NLS-1$
-			thread.start(); /* Start DeviceManager thread */
-		}
-	}
-
-	/**
-	 * Stop the Device Manager bundle.
-	 *
-	 * @param context The device manager's bundle context
-	 */
-
-	public void stop(BundleContext context) throws Exception {
-		context.removeFrameworkListener(this);
-
-		if (running) {
-			Thread t = thread;
-
-			running = false; /* request thread to stop */
-
-			if (t != null) {
-				t.interrupt();
-
-				synchronized (t) {
-					while (t.isAlive()) /* wait for thread to complete */
-					{
-						try {
-							t.wait(0);
-						} catch (InterruptedException e) {
-						}
-					}
-				}
-			}
-		}
-
-		if (drivers != null) {
-			drivers.close();
-			drivers = null;
-		}
-
-		if (devices != null) {
-			devices.close();
-			devices = null;
-		}
-
-		if (locators != null) {
-			locators.close();
-			locators = null;
-		}
-
-		if (selectors != null) {
-			selectors.close();
-			selectors = null;
-		}
-
-		if (log != null) {
-			log.close();
-			log = null;
-		}
-
-		this.context = null;
-	}
-
-	/**
-	 * A service is being added to the ServiceTracker.
-	 *
-	 * <p>This method is called before a service which matched
-	 * the search parameters of the ServiceTracker is
-	 * added to the ServiceTracker. This method should return the
-	 * service object to be tracked for this ServiceReference.
-	 * The returned service object is stored in the ServiceTracker
-	 * and is available from the getService and getServices
-	 * methods.
-	 *
-	 * @param reference Reference to service being added to the ServiceTracker.
-	 * @return The service object to be tracked for the
-	 * ServiceReference or <tt>null</tt> if the ServiceReference should not
-	 * be tracked.
-	 */
-	public Object addingService(ServiceReference reference) {
-		if (Activator.DEBUG) {
-			log.log(reference, log.LOG_DEBUG, "DeviceManager device service registered"); //$NON-NLS-1$
-		}
-
-		enqueue(new DeviceTracker(this, reference));
-
-		return (reference);
-	}
-
-	/**
-	 * A service tracked by the ServiceTracker has been modified.
-	 *
-	 * <p>This method is called when a service being tracked
-	 * by the ServiceTracker has had it properties modified.
-	 *
-	 * @param reference Reference to service that has been modified.
-	 * @param service The service object for the modified service.
-	 */
-	public void modifiedService(ServiceReference reference, Object service) {
-	}
-
-	/**
-	 * A service tracked by the ServiceTracker is being removed.
-	 *
-	 * <p>This method is called after a service is no longer being tracked
-	 * by the ServiceTracker.
-	 *
-	 * @param reference Reference to service that has been removed.
-	 * @param service The service object for the removed service.
-	 */
-	public void removedService(ServiceReference reference, Object object) {
-		if (Activator.DEBUG) {
-			log.log(reference, log.LOG_DEBUG, "DeviceManager device service unregistered"); //$NON-NLS-1$
-		}
-
-		/* We do not implement optional driver reclamation.
-		 * Thus we take no specific action upon Device service unregistration .
-		 */
-	}
-
-	public void refineIdleDevices() {
-		if (Activator.DEBUG) {
-			log.log(log.LOG_DEBUG, "DeviceManager refining idle device services"); //$NON-NLS-1$
-		}
-
-		ServiceReference[] references = devices.getServiceReferences();
-
-		if (references != null) {
-			int size = references.length;
-
-			for (int i = 0; i < size; i++) {
-				ServiceReference device = references[i];
-
-				enqueue(new DeviceTracker(this, device));
-			}
-		}
-	}
-
-	/**
-	 * Main thread for DeviceManager.
-	 *
-	 * Attempt to refine all Device services that are not in use
-	 * by a driver bundle.
-	 */
-	public void run() {
-		while (running) {
-			DeviceTracker device;
-
-			try {
-				device = dequeue();
-			} catch (InterruptedException e) {
-				continue;
-			}
-
-			try {
-				device.refine();
-			} catch (Throwable t) {
-				log.log(log.LOG_ERROR, NLS.bind(DeviceMsg.DeviceManager_has_thrown_an_error, t)); ////-1$
-			}
-		}
-	}
-
-	/**
-	 * Queue the object to be processed on the work thread.
-	 * The thread is notified.
-	 *
-	 * @param device Work item.
-	 */
-	public synchronized void enqueue(DeviceTracker device) {
-		if (device != null) {
-			if (Activator.DEBUG) {
-				log.log(log.LOG_DEBUG, "DeviceManager queuing DeviceTracker"); //$NON-NLS-1$
-			}
-
-			DeviceService item = new DeviceService(device);
-
-			if (head == null) /* if the queue was empty */
-			{
-				head = item;
-				tail = item;
-			} else /* else add to end of queue */
-			{
-				tail.next = item;
-				tail = item;
-			}
-		}
-
-		notify();
-	}
-
-	/**
-	 * Dequeue an object from the work thread.
-	 * If the queue is empty, this method blocks.
-	 *
-	 * @return Dequeue object from the work thread.
-	 * @throws InterruptedException If the queue has been stopped.
-	 */
-	private synchronized DeviceTracker dequeue() throws InterruptedException {
-		while (running && (head == null)) {
-			/* This should be included per Section 8.7.7 of the OSGi SP R2
-			 * spec, but it causes the OSGi SP R2 Test Suite to fail.
-			 * We should turn this on for R3.
-
-			 if (driverServiceRegistered)
-			 */
-			if (false) {
-				driverServiceRegistered = false;
-
-				refineIdleDevices();
-			} else {
-				locators.uninstallDriverBundles();
-
-				try {
-					if (Activator.DEBUG) {
-						log.log(log.LOG_DEBUG, "DeviceManager waiting on queue"); //$NON-NLS-1$
-					}
-
-					wait();
-				} catch (InterruptedException e) {
-				}
-			}
-		}
-
-		if (!running) /* if we are stopping */
-		{
-			throw new InterruptedException(); /* throw an exception */
-		}
-
-		DeviceService item = head;
-		head = item.next;
-		if (head == null) {
-			tail = null;
-		}
-
-		return (item.device);
-	}
-}
diff --git a/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/DeviceMsg.java b/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/DeviceMsg.java
deleted file mode 100644
index bbb83f3..0000000
--- a/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/DeviceMsg.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.equinox.device;
-
-import org.eclipse.osgi.util.NLS;
-
-public class DeviceMsg extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.equinox.device.ExternalMessages"; //$NON-NLS-1$
-
-	public static String DeviceManager_started;
-	public static String Device_service_unregistered;
-	public static String Device_noDriverFound_called;
-	public static String Multiple_Driver_services_with_the_same_DRIVER_ID;
-	public static String DeviceManager_Update_Wait;
-	public static String Driver_service_has_no_DRIVER_ID_property;
-	public static String Device_attached_by_DRIVER_ID;
-	public static String Device_referred_to;
-	public static String Unable_to_create_Filter_for_DeviceManager;
-	public static String DeviceManager_has_thrown_an_error;
-	public static String Device_noDriverFound_error;
-	public static String DriverLocator_unable_to_load_driver;
-	public static String DriverLocator_error_calling_findDrivers;
-	public static String Unable_to_install_or_start_driver_bundle;
-	public static String Unable_to_uninstall_driver_bundle;
-	public static String Unable_to_uninstall_driver_bundle_number;
-	public static String DriverSelector_error_during_match;
-	public static String Driver_service_has_no_DRIVER_ID;
-	public static String Driver_error_during_match;
-	public static String Driver_error_during_attach;
-
-	static {
-		// initialize resource bundles
-		NLS.initializeMessages(BUNDLE_NAME, DeviceMsg.class);
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/DeviceTracker.java b/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/DeviceTracker.java
deleted file mode 100644
index ee85a7f..0000000
--- a/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/DeviceTracker.java
+++ /dev/null
@@ -1,341 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.equinox.device;
-
-import java.util.*;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-import org.osgi.service.device.Device;
-import org.osgi.service.log.LogService;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * DeviceTracker class. This class has the logic for refining a
- * Device service.
- *
- */
-public class DeviceTracker extends ServiceTracker {
-	/** OSGi Device class name */
-	protected final static String clazz = "org.osgi.service.device.Device"; //$NON-NLS-1$
-
-	/** DeviceManager object. */
-	protected Activator manager;
-
-	/** reference to Device service we are attempting to refine */
-	protected ServiceReference device;
-
-	/** LogService object */
-	protected LogService log;
-
-	/** Device services properties */
-	protected Dictionary properties;
-
-	/** if false the algorithm must terminate */
-	protected volatile boolean running;
-
-	/**
-	 * Create a DeviceTracker from a ServiceReference.
-	 *
-	 * @param manager DeviceManager object
-	 * @param device ServiceReference to the Device service.
-	 * @param id ID of DeviceTracker object
-	 */
-	public DeviceTracker(Activator manager, ServiceReference device) {
-		super(manager.context, device, null);
-
-		this.manager = manager;
-		log = manager.log;
-
-		if (Activator.DEBUG) {
-			log.log(device, log.LOG_DEBUG, this + " constructor"); //$NON-NLS-1$
-		}
-
-		open();
-	}
-
-	/**
-	 * Close the Device.
-	 */
-
-	public void close() {
-		if (device != null) {
-			if (Activator.DEBUG) {
-				log.log(device, log.LOG_DEBUG, this + " closing"); //$NON-NLS-1$
-			}
-
-			running = false; /* request thread to stop */
-
-			super.close();
-
-			device = null;
-		}
-	}
-
-	/**
-	 * A service is being added to the ServiceTracker.
-	 *
-	 * <p>This method is called before a service which matched
-	 * the search parameters of the ServiceTracker is
-	 * added to the ServiceTracker. This method should return the
-	 * service object to be tracked for this ServiceReference.
-	 * The returned service object is stored in the ServiceTracker
-	 * and is available from the getService and getServices
-	 * methods.
-	 *
-	 * @param reference Reference to service being added to the ServiceTracker.
-	 * @return The service object to be tracked for the
-	 * ServiceReference or <tt>null</tt> if the ServiceReference should not
-	 * be tracked.
-	 */
-	public Object addingService(ServiceReference reference) {
-		if (Activator.DEBUG) {
-			log.log(reference, log.LOG_DEBUG, this + " adding Device service"); //$NON-NLS-1$
-		}
-
-		device = reference;
-
-		running = true;
-
-		properties = new Properties(reference);
-
-		return (reference);
-	}
-
-	/**
-	 * A service tracked by the ServiceTracker has been modified.
-	 *
-	 * <p>This method is called when a service being tracked
-	 * by the ServiceTracker has had it properties modified.
-	 *
-	 * @param reference Reference to service that has been modified.
-	 * @param service The service object for the modified service.
-	 */
-	public void modifiedService(ServiceReference reference, Object service) {
-		properties = new Properties(reference);
-	}
-
-	/**
-	 * A service tracked by the ServiceTracker is being removed.
-	 *
-	 * <p>This method is called after a service is no longer being tracked
-	 * by the ServiceTracker.
-	 *
-	 * @param reference Reference to service that has been removed.
-	 * @param service The service object for the removed service.
-	 */
-	public void removedService(ServiceReference reference, Object service) {
-		if (running) {
-			log.log(reference, log.LOG_WARNING, DeviceMsg.Device_service_unregistered);
-			running = false; /* request algorithm to stop */
-		} else {
-			if (Activator.DEBUG) {
-				log.log(reference, log.LOG_DEBUG, this + " removing Device service"); //$NON-NLS-1$
-			}
-		}
-	}
-
-	/**
-	 * Attempt to refine this Device service.
-	 *
-	 */
-	public void refine() {
-		if (Activator.DEBUG) {
-			log.log(device, log.LOG_DEBUG, this + " refining " + device); //$NON-NLS-1$
-		}
-
-		if (running && isIdle()) {
-			/* List of excluded drivers from this algorithm run */
-			DriverTracker drivers = manager.drivers;
-
-			manager.locators.loadDrivers(properties, drivers);
-
-			Vector exclude = new Vector(drivers.size());
-
-			while (running) {
-				ServiceReference driver = drivers.match(device, exclude);
-
-				if (driver == null) {
-					noDriverFound();
-					break;
-				}
-
-				if (drivers.attach(driver, device, exclude)) {
-					break;
-				}
-			}
-		}
-
-		close();
-	}
-
-	/**
-	 * Determine if the device service tracked by this object is idle.
-	 *
-	 * OSGi SP R2 Section 8.2.2 defines in idle device service as:
-	 * "A Device service is not used by any other bundle according to the Framework;
-	 * it is called an idle Device service."
-	 *
-	 * This method defines it as:
-	 *  A Device service is not used by any DRIVER bundle according to the Framework;
-	 *  it is called an idle Device service.
-	 *
-	 * Thus if a non-driver bundle uses a device service, it is still considered
-	 * idle by this method.
-	 *
-	 * @return true if the device service is idle.
-	 */
-	public boolean isIdle() {
-		if (Activator.DEBUG) {
-			log.log(device, log.LOG_DEBUG, "Check device service idle: " + device); //$NON-NLS-1$
-		}
-
-		Filter filter = manager.driverFilter;
-		Bundle[] users = device.getUsingBundles();
-
-		int userCount = (users == null) ? 0 : users.length;
-
-		for (int i = 0; i < userCount; i++) {
-			ServiceReference[] services = users[i].getRegisteredServices();
-
-			int servicesCount = (services == null) ? 0 : services.length;
-
-			for (int j = 0; j < servicesCount; j++) {
-				if (filter.match(services[j])) {
-					if (Activator.DEBUG) {
-						log.log(log.LOG_DEBUG, "Device " + device + " already in use by bundle " + users[i]); //$NON-NLS-1$ //$NON-NLS-2$
-					}
-
-					return (false);
-				}
-			}
-		}
-
-		return (true);
-	}
-
-	/**
-	 * Called by the device manager after it has failed to attach
-	 * any driver to the device.
-	 * <p>
-	 * If the device can be configured in alternate ways, the driver
-	 * may respond by unregistering the device service and registering
-	 * a different device service instead.</p>
-	 */
-
-	public void noDriverFound() {
-		BundleContext context = manager.context;
-
-		Object service = context.getService(device);
-
-		try {
-			//It is possible that this is a Free Format Device that does not
-			//implement Device
-			if (service instanceof Device) {
-				log.log(device, log.LOG_INFO, DeviceMsg.Device_noDriverFound_called);
-
-				try {
-					((Device) service).noDriverFound();
-				} catch (Throwable t) {
-					log.log(device, log.LOG_ERROR, NLS.bind(DeviceMsg.Device_noDriverFound_error, t));
-				}
-			}
-		} finally {
-			context.ungetService(device);
-		}
-
-	}
-
-	public String toString() {
-		return "DeviceTracker"; //$NON-NLS-1$
-	}
-
-	/**
-	 * Readonly Dictionary for device properties.
-	 *
-	 */
-	static class Properties extends Hashtable {
-		/**
-		 * keys in original case.
-		 */
-		protected Vector keys;
-
-		/**
-		 * Create a properties object for the service.
-		 *
-		 * @param device The service to get the properties of.
-		 */
-		protected Properties(ServiceReference device) {
-			super();
-
-			String[] props = device.getPropertyKeys();
-
-			if (props != null) {
-				int size = props.length;
-
-				keys = new Vector(size);
-
-				for (int i = 0; i < size; i++) {
-					String key = props[i];
-					Object value = device.getProperty(key);
-
-					if (value != null) {
-						keys.addElement(key);
-
-						super.put(key.toLowerCase(), value);
-					}
-				}
-			} else {
-				keys = new Vector(0);
-			}
-		}
-
-		/**
-		 * Override keys to support case-preserving of keys.
-		 */
-		public Enumeration keys() {
-			return (keys.elements());
-		}
-
-		/**
-		 * Override get to support case-insensitivity.
-		 *
-		 * @param key header name.
-		 */
-		public Object get(Object key) {
-			if (key instanceof String) {
-				return (super.get(((String) key).toLowerCase()));
-			}
-
-			return (null);
-		}
-
-		/**
-		 * Override put to disable it. This Dictionary is readonly once built.
-		 *
-		 * @param key header name.
-		 * @param value header value.
-		 * @throws UnsupportedOperationException.
-		 */
-		public Object put(Object key, Object value) {
-			throw new UnsupportedOperationException();
-		}
-
-		/**
-		 * Override remove to disable it. This Dictionary is readonly once built.
-		 *
-		 * @param key header name.
-		 * @throws UnsupportedOperationException.
-		 */
-		public Object remove(Object key) {
-			throw new UnsupportedOperationException();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/DriverLocatorTracker.java b/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/DriverLocatorTracker.java
deleted file mode 100644
index 329fd67..0000000
--- a/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/DriverLocatorTracker.java
+++ /dev/null
@@ -1,344 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.equinox.device;
-
-import java.io.InputStream;
-import java.util.Dictionary;
-import java.util.Vector;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-import org.osgi.service.device.DriverLocator;
-import org.osgi.service.log.LogService;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * DriverLocatorTracker class. This class tracks all DriverLocator services.
- *
- */
-public class DriverLocatorTracker extends ServiceTracker {
-	protected final static String clazz = "org.osgi.service.device.DriverLocator"; //$NON-NLS-1$
-
-	/** DeviceManager object. */
-	protected Activator manager;
-
-	/** LogService object */
-	protected LogService log;
-
-	/** List of bundles to be uninstalled. */
-	protected Vector bundles;
-
-	/**
-	 * Create the DriverLocatorTracker.
-	 *
-	 * @param context Device manager bundle context.
-	 * @param log LogService object
-	 */
-	public DriverLocatorTracker(Activator manager) {
-		super(manager.context, clazz, null);
-
-		this.manager = manager;
-		log = manager.log;
-		bundles = new Vector(10, 10);
-
-		if (Activator.DEBUG) {
-			log.log(LogService.LOG_DEBUG, "DriverLocatorTracker constructor"); //$NON-NLS-1$
-		}
-
-		open();
-	}
-
-	/**
-	 * A service is being added to the ServiceTracker.
-	 *
-	 * <p>This method is called before a service which matched
-	 * the search parameters of the ServiceTracker is
-	 * added to the ServiceTracker. This method should return the
-	 * service object to be tracked for this ServiceReference.
-	 * The returned service object is stored in the ServiceTracker
-	 * and is available from the getService and getServices
-	 * methods.
-	 *
-	 * @param reference Reference to service being added to the ServiceTracker.
-	 * @return The service object to be tracked for the
-	 * ServiceReference or <tt>null</tt> if the ServiceReference should not
-	 * be tracked.
-	 */
-	public Object addingService(ServiceReference reference) {
-		if (Activator.DEBUG) {
-			log.log(reference, LogService.LOG_DEBUG, "DriverLocatorTracker adding service"); //$NON-NLS-1$
-		}
-
-		return (context.getService(reference));
-	}
-
-	/**
-	 * A service tracked by the ServiceTracker has been modified.
-	 *
-	 * <p>This method is called when a service being tracked
-	 * by the ServiceTracker has had it properties modified.
-	 *
-	 * @param reference Reference to service that has been modified.
-	 * @param service The service object for the modified service.
-	 */
-	public void modifiedService(ServiceReference reference, Object service) {
-	}
-
-	/**
-	 * A service tracked by the ServiceTracker is being removed.
-	 *
-	 * <p>This method is called after a service is no longer being tracked
-	 * by the ServiceTracker.
-	 *
-	 * @param reference Reference to service that has been removed.
-	 * @param service The service object for the removed service.
-	 */
-	public void removedService(ServiceReference reference, Object object) {
-		if (Activator.DEBUG) {
-			log.log(reference, LogService.LOG_DEBUG, "DriverLocatorTracker removing service"); //$NON-NLS-1$
-		}
-
-		context.ungetService(reference);
-	}
-
-	/**
-	 * Call the DriverLocator services in an attempt to locate and
-	 * install driver bundles to refine the device service.
-	 *
-	 * @param locators Array of DriverLocator objects
-	 * @param drivers Dictionary of drivers with key=DRIVER_ID, value=Driver object
-	 */
-	public void loadDrivers(Dictionary properties, DriverTracker drivers) {
-		if (Activator.DEBUG) {
-			log.log(LogService.LOG_DEBUG, Thread.currentThread().getName() + ": DriverLocatorTracker loadDrivers called"); //$NON-NLS-1$
-		}
-
-		ServiceReference[] references = getServiceReferences();
-
-		if (references != null) {
-			int size = references.length;
-
-			for (int i = 0; i < size; i++) {
-				ServiceReference locator = references[i];
-				DriverLocator service = (DriverLocator) getService(locator);
-
-				if (service != null) {
-					if (Activator.DEBUG) {
-						log.log(locator, LogService.LOG_DEBUG, Thread.currentThread().getName() + ": DriverLocator findDrivers called"); //$NON-NLS-1$
-					}
-
-					try {
-						String[] driver_ids = service.findDrivers(properties);
-
-						if (Activator.DEBUG) {
-							int count = (driver_ids == null) ? 0 : driver_ids.length;
-
-							StringBuffer sb = new StringBuffer();
-
-							sb.append('<');
-
-							for (int k = 0; k < count; k++) {
-								if (k > 0) {
-									sb.append(',');
-								}
-								sb.append(driver_ids[k]);
-							}
-
-							sb.append('>');
-
-							log.log(locator, LogService.LOG_DEBUG, Thread.currentThread().getName() + ": DriverLocator findDrivers returned: " + sb); //$NON-NLS-1$
-						}
-
-						if (driver_ids != null) {
-							int count = driver_ids.length;
-
-							for (int j = 0; j < count; j++) {
-								String driver_id = driver_ids[j];
-
-								if (drivers.getDriver(driver_id) == null) {
-									if (Activator.DEBUG) {
-										log.log(locator, LogService.LOG_DEBUG, Thread.currentThread().getName() + ": DriverLocator loadDriver called for driver: " + driver_id); //$NON-NLS-1$
-									}
-
-									try {
-										InputStream in = service.loadDriver(driver_id);
-
-										if (Activator.DEBUG) {
-											log.log(locator, LogService.LOG_DEBUG, Thread.currentThread().getName() + ": DriverLocator loadDriver returned: " + in); //$NON-NLS-1$
-										}
-
-										installDriverBundle(driver_id, in);
-									} catch (Throwable t) {
-										log.log(locator, LogService.LOG_ERROR, NLS.bind(DeviceMsg.DriverLocator_unable_to_load_driver, driver_id), t);
-									}
-								}
-							}
-						}
-					} catch (Throwable t) {
-						log.log(locator, LogService.LOG_ERROR, DeviceMsg.DriverLocator_error_calling_findDrivers, t);
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * Get an <code>InputStream</code> from which the driver bundle providing a driver with the giving ID can be installed.
-	 *
-	 * @param id the ID of the driver that needs to be installed.
-	 * @return the <code>InputStream</code> from which the driver
-	 * bundle can be installed
-	 */
-
-	public void loadDriver(String driver_id, DriverTracker drivers) {
-		if (Activator.DEBUG) {
-			log.log(LogService.LOG_DEBUG, Thread.currentThread().getName() + ": DriverLocatorTracker loadDriver called for driver: " + driver_id); //$NON-NLS-1$
-		}
-
-		if (drivers.getDriver(driver_id) == null) {
-			ServiceReference[] references = getServiceReferences();
-
-			if (references != null) {
-				int size = references.length;
-
-				for (int i = 0; i < size; i++) {
-					ServiceReference locator = references[i];
-					DriverLocator service = (DriverLocator) getService(locator);
-
-					if (service != null) {
-						if (Activator.DEBUG) {
-							log.log(locator, LogService.LOG_DEBUG, Thread.currentThread().getName() + ": DriverLocator loadDriver called for driver: " + driver_id); //$NON-NLS-1$
-						}
-
-						try {
-							InputStream in = service.loadDriver(driver_id);
-
-							if (Activator.DEBUG) {
-								log.log(locator, LogService.LOG_DEBUG, Thread.currentThread().getName() + ": DriverLocator loadDriver returned: " + in); //$NON-NLS-1$
-							}
-
-							if (in != null) {
-								installDriverBundle(driver_id, in);
-
-								break;
-							}
-						} catch (Throwable t) {
-							log.log(locator, LogService.LOG_ERROR, NLS.bind(DeviceMsg.DriverLocator_unable_to_load_driver, driver_id), t);
-						}
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * Install a Driver bundle.
-	 *
-	 * @param driver_id DRIVER_ID for new driver bundle.
-	 * @param in InputStream to a new driver bundle.
-	 */
-	public void installDriverBundle(String driver_id, InputStream in) {
-		if (Activator.DEBUG) {
-			log.log(LogService.LOG_DEBUG, Thread.currentThread().getName() + ": installDriverBundle from InputStream: " + driver_id); //$NON-NLS-1$
-		}
-
-		if (in != null) {
-			Bundle bundle = null;
-
-			try {
-				bundle = context.installBundle(driver_id, in);
-				/* installBundle will close the InputStream */
-
-				if (Activator.DEBUG) {
-					log.log(LogService.LOG_DEBUG, Thread.currentThread().getName() + ": Driver bundle installed: " + driver_id); //$NON-NLS-1$
-				}
-
-				synchronized (bundles) {
-					if (!bundles.contains(bundle)) {
-						bundles.addElement(bundle);
-					}
-				}
-
-				bundle.start();
-
-				if (Activator.DEBUG) {
-					log.log(LogService.LOG_DEBUG, Thread.currentThread().getName() + ": Driver bundle started: " + driver_id); //$NON-NLS-1$
-				}
-			} catch (BundleException e) {
-				log.log(LogService.LOG_ERROR, NLS.bind(DeviceMsg.Unable_to_install_or_start_driver_bundle, driver_id), e);
-
-				if (bundle != null) {
-					bundles.removeElement(bundle);
-
-					try {
-						bundle.uninstall();
-
-						if (Activator.DEBUG) {
-							log.log(LogService.LOG_DEBUG, Thread.currentThread().getName() + ": Driver bundle uninstalled: " + driver_id); //$NON-NLS-1$
-						}
-					} catch (BundleException ee) {
-						log.log(LogService.LOG_ERROR, NLS.bind(DeviceMsg.Unable_to_uninstall_driver_bundle_number, driver_id), ee);
-					}
-
-					bundle = null;
-				}
-			}
-		}
-	}
-
-	/**
-	 * Remove bundle from uninstall list.
-	 *
-	 * @param bundle bundle to remove from list.
-	 */
-	public void usingDriverBundle(Bundle bundle) {
-		bundles.removeElement(bundle);
-	}
-
-	/**
-	 * Uninstall the recently installed but unused driver bundles.
-	 *
-	 */
-	public void uninstallDriverBundles() {
-		int size;
-		Bundle[] uninstall = null;
-
-		synchronized (bundles) {
-			size = bundles.size();
-
-			if (size > 0) {
-				uninstall = new Bundle[size];
-				bundles.copyInto(uninstall);
-			}
-		}
-
-		for (int i = 0; i < size; i++) {
-			Bundle bundle = uninstall[i];
-
-			if ((bundle.getState() & Bundle.UNINSTALLED) == 0) { /* if bundle not already uninstalled */
-				try {
-					bundle.uninstall();
-
-					if (Activator.DEBUG) {
-						log.log(LogService.LOG_DEBUG, Thread.currentThread().getName() + ": Driver bundle uninstalled"); //$NON-NLS-1$
-					}
-				} catch (BundleException ee) {
-					log.log(LogService.LOG_ERROR, NLS.bind(DeviceMsg.Unable_to_uninstall_driver_bundle, ee));
-				}
-			}
-		}
-
-		bundles.removeAllElements();
-	}
-
-	public boolean isUninstallCandidate(Bundle bundle) {
-		return bundles.contains(bundle);
-	}
-}
diff --git a/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/DriverSelectorTracker.java b/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/DriverSelectorTracker.java
deleted file mode 100644
index cbd469a..0000000
--- a/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/DriverSelectorTracker.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.equinox.device;
-
-import org.osgi.framework.ServiceReference;
-import org.osgi.service.device.Device;
-import org.osgi.service.device.DriverSelector;
-import org.osgi.service.log.LogService;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * DriverSelectorTracker class. This class tracks all DriverSelector services.
- *
- */
-public class DriverSelectorTracker extends ServiceTracker {
-	/** Driver service name */
-	protected final static String clazz = "org.osgi.service.device.DriverSelector"; //$NON-NLS-1$
-
-	/** LogService object */
-	protected LogService log;
-
-	/** DeviceManager object. */
-	protected Activator manager;
-
-	/**
-	 * Create the DriverTracker.
-	 *
-	 * @param manager DeviceManager object.
-	 * @param device DeviceTracker we are working for.
-	 */
-	public DriverSelectorTracker(Activator manager) {
-		super(manager.context, clazz, null);
-
-		this.manager = manager;
-		log = manager.log;
-
-		if (Activator.DEBUG) {
-			log.log(log.LOG_DEBUG, "DriverSelectorTracker constructor"); //$NON-NLS-1$
-		}
-
-		open();
-	}
-
-	/**
-	 * Select the matching driver.
-	 *
-	 * @param device Device service being matched.
-	 * @param matches Array of the successful matches from Driver services.
-	 * @return ServiceReference to best matched Driver or null of their is no match.
-	 */
-	public ServiceReference select(ServiceReference device, Match[] matches) {
-		if (Activator.DEBUG) {
-			log.log(device, log.LOG_DEBUG, "DriverSelector select called"); //$NON-NLS-1$
-		}
-
-		//This should give us the highest ranking DriverSelector (if available)
-		ServiceReference selector = getServiceReference();
-
-		if (selector != null) {
-			DriverSelector service = (DriverSelector) getService(selector);
-
-			try {
-				int index = service.select(device, matches);
-
-				if (index == DriverSelector.SELECT_NONE) {
-					return null;
-				}
-
-				return matches[index].getDriver();
-			} catch (Throwable t) {
-				log.log(selector, log.LOG_ERROR, DeviceMsg.DriverSelector_error_during_match, t);
-			}
-		}
-
-		return defaultSelection(matches);
-	}
-
-	/**
-	 * Default match selection algorithm from OSGi SPR2 spec.
-	 *
-	 * @param matchArray An array of the successful matches.
-	 * @return ServiceReference to the selected Driver service
-	 */
-	public ServiceReference defaultSelection(Match[] matches) {
-		int size = matches.length;
-
-		int max = Device.MATCH_NONE;
-		ServiceReference reference = null;
-
-		for (int i = 0; i < size; i++) {
-			Match driver = matches[i];
-
-			int match = driver.getMatchValue();
-
-			if (match >= max) {
-				if (match == max) /* we must break the tie */
-				{
-					reference = breakTie(reference, driver.getDriver());
-				} else {
-					max = match;
-					reference = driver.getDriver();
-				}
-			}
-		}
-
-		return reference;
-	}
-
-	/**
-	 * Select the service with the highest service.ranking. Break ties
-	 * buy selecting the lowest service.id.
-	 *
-	 */
-	public ServiceReference breakTie(ServiceReference ref1, ServiceReference ref2) {
-		//first we check service rankings
-		Object property = ref1.getProperty(org.osgi.framework.Constants.SERVICE_RANKING);
-
-		int ref1Ranking = (property instanceof Integer) ? ((Integer) property).intValue() : 0;
-
-		property = ref2.getProperty(org.osgi.framework.Constants.SERVICE_RANKING);
-
-		int ref2Ranking = (property instanceof Integer) ? ((Integer) property).intValue() : 0;
-
-		if (ref1Ranking > ref2Ranking) {
-			return ref1;
-		} else if (ref2Ranking > ref1Ranking) {
-			return ref2;
-		} else // The rankings must match here
-		{
-			//we now check service ids
-			long ref1ID = ((Long) (ref1.getProperty(org.osgi.framework.Constants.SERVICE_ID))).longValue();
-
-			long ref2ID = ((Long) (ref2.getProperty(org.osgi.framework.Constants.SERVICE_ID))).longValue();
-
-			if (ref1ID < ref2ID) {
-				return ref1;
-			}
-
-			return ref2;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/DriverTracker.java b/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/DriverTracker.java
deleted file mode 100644
index a7026c4..0000000
--- a/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/DriverTracker.java
+++ /dev/null
@@ -1,485 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.equinox.device;
-
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.Hashtable;
-import java.util.Vector;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-import org.osgi.service.device.Device;
-import org.osgi.service.device.Driver;
-import org.osgi.service.log.LogService;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * DriverTracker class. This class tracks all Driver services.
- *
- */
-public class DriverTracker extends ServiceTracker {
-	/** Driver service name */
-	protected final static String clazz = "org.osgi.service.device.Driver"; //$NON-NLS-1$
-
-	/** LogService object */
-	protected LogService log;
-
-	/** Dictionary mapping DRIVER_ID strings <==> Driver ServiceReferences */
-	protected Hashtable drivers;
-
-	/** DeviceManager object. */
-	protected Activator manager;
-
-	/** Dictionary mapping Driver ID String =>
-	 *  Hashtable (Device ServiceReference => cached Match objects) */
-	protected Hashtable matches;
-
-	/** Dictionary mapping Driver ID String =>
-	 *  Hashtable (Device ServiceReference => cached referral String) */
-	protected Hashtable referrals;
-
-	/**
-	 * Create the DriverTracker.
-	 *
-	 * @param manager DeviceManager object.
-	 * @param device DeviceTracker we are working for.
-	 */
-	public DriverTracker(Activator manager) {
-		super(manager.context, clazz, null);
-
-		this.manager = manager;
-		log = manager.log;
-
-		drivers = new Hashtable(37);
-		matches = new Hashtable(37);
-		referrals = new Hashtable(37);
-
-		if (Activator.DEBUG) {
-			log.log(LogService.LOG_DEBUG, this + " constructor"); //$NON-NLS-1$
-		}
-
-		open();
-	}
-
-	/**
-	 * A service is being added to the ServiceTracker.
-	 *
-	 * <p>This method is called before a service which matched
-	 * the search parameters of the ServiceTracker is
-	 * added to the ServiceTracker. This method should return the
-	 * service object to be tracked for this ServiceReference.
-	 * The returned service object is stored in the ServiceTracker
-	 * and is available from the getService and getServices
-	 * methods.
-	 *
-	 * @param reference Reference to service being added to the ServiceTracker.
-	 * @return The service object to be tracked for the
-	 * ServiceReference or <tt>null</tt> if the ServiceReference should not
-	 * be tracked.
-	 */
-	public Object addingService(ServiceReference reference) {
-		if (Activator.DEBUG) {
-			log.log(reference, LogService.LOG_DEBUG, this + " adding service"); //$NON-NLS-1$
-		}
-
-		String driver_id = getDriverID(reference);
-
-		if (drivers.get(driver_id) != null) {
-			log.log(reference, LogService.LOG_WARNING, NLS.bind(DeviceMsg.Multiple_Driver_services_with_the_same_DRIVER_ID, driver_id));
-
-			return (null); /* don't track this driver */
-		}
-
-		drivers.put(driver_id, reference);
-		drivers.put(reference, driver_id);
-
-		manager.driverServiceRegistered = true;
-
-		/* OSGi SPR2 Device Access 1.1
-		 * Section 8.4.3 - When a new Driver service is registered,
-		 * the Device Attachment Algorithm must be applied to all
-		 * idle Device services.
-		 *
-		 * We do not refine idle Devices when the manager has not fully
-		 * started or the Driver service is from a bundle just installed
-		 * by the devicemanager.
-		 */
-		Bundle bundle = reference.getBundle();
-
-		if (manager.running && !manager.locators.isUninstallCandidate(bundle)) {
-			manager.refineIdleDevices();
-		}
-
-		return (context.getService(reference));
-	}
-
-	/**
-	 * A service tracked by the ServiceTracker has been modified.
-	 *
-	 * <p>This method is called when a service being tracked
-	 * by the ServiceTracker has had it properties modified.
-	 *
-	 * @param reference Reference to service that has been modified.
-	 * @param service The service object for the modified service.
-	 */
-	public void modifiedService(ServiceReference reference, Object service) {
-		if (Activator.DEBUG) {
-			log.log(reference, LogService.LOG_DEBUG, this + " modified service"); //$NON-NLS-1$
-		}
-
-		String driver_id = getDriverID(reference);
-
-		String old_id = (String) drivers.get(reference);
-
-		if (!driver_id.equals(old_id)) {
-			drivers.put(driver_id, reference);
-			drivers.put(reference, driver_id);
-			drivers.remove(old_id);
-		}
-	}
-
-	/**
-	 * A service tracked by the ServiceTracker is being removed.
-	 *
-	 * <p>This method is called after a service is no longer being tracked
-	 * by the ServiceTracker.
-	 *
-	 * @param reference Reference to service that has been removed.
-	 * @param service The service object for the removed service.
-	 */
-	public void removedService(ServiceReference reference, Object object) {
-		if (Activator.DEBUG) {
-			log.log(reference, LogService.LOG_DEBUG, this + " removing service"); //$NON-NLS-1$
-		}
-
-		String driver_id = getDriverID(reference);
-		drivers.remove(driver_id);
-		drivers.remove(reference);
-
-		matches.remove(driver_id);
-		referrals.remove(driver_id);
-
-		context.ungetService(reference);
-
-		/* OSGi SPR2 Device Access 1.1
-		 * Section 8.4.4 - When a Driver service is unregistered,
-		 * the Device Attachment Algorithm must be applied to all
-		 * idle Device services.
-		 *
-		 * We do not refine idle Devices when the manager has not fully
-		 * started or the Driver service is from a bundle just installed
-		 * by the devicemanager.
-		 */
-
-		Bundle bundle = reference.getBundle();
-
-		if (manager.running && !manager.locators.isUninstallCandidate(bundle)) {
-			DriverUpdate update = new DriverUpdate(bundle, manager);
-
-			Thread thread = (new SecureAction()).createThread(update, DeviceMsg.DeviceManager_Update_Wait);
-
-			thread.start();
-		}
-	}
-
-	/**
-	 * Return the DRIVER_ID string for a ServiceReference.
-	 *
-	 * Per Section 8.4.3 of the OSGi SP R2 spec,
-	 * "A Driver service registration must have a DRIVER_ID property"
-	 *
-	 * This method is somewhat more lenient. If no DRIVER_ID property
-	 * is set, it will use the Bundle's location instead.
-	 *
-	 * @param reference Reference to driver service.
-	 * @param log LogService object.
-	 * @return DRIVER_ID string.
-	 */
-	public String getDriverID(final ServiceReference reference) {
-		String driver_id = (String) reference.getProperty(org.osgi.service.device.Constants.DRIVER_ID);
-
-		if (driver_id == null) {
-			log.log(reference, LogService.LOG_WARNING, DeviceMsg.Driver_service_has_no_DRIVER_ID);
-			driver_id = (String) AccessController.doPrivileged(new PrivilegedAction() {
-				public Object run() {
-					return reference.getBundle().getLocation();
-				}
-			});
-		}
-
-		return (driver_id);
-	}
-
-	/**
-	 * Get the ServiceReference for a given DRIVER_ID.
-	 *
-	 * @param driver_id
-	 * @return ServiceReference to a Driver service.
-	 */
-	public ServiceReference getDriver(String driver_id) {
-		return ((ServiceReference) drivers.get(driver_id));
-	}
-
-	/**
-	 * Search the driver list to find the best match for the device.
-	 *
-	 * @return ServiceReference to best matched Driver or null of their is no match.
-	 */
-	public ServiceReference match(ServiceReference device, Vector exclude) {
-		if (Activator.DEBUG) {
-			log.log(device, LogService.LOG_DEBUG, this + ": Driver match called"); //$NON-NLS-1$
-		}
-
-		ServiceReference[] references = getServiceReferences();
-
-		if (references != null) {
-			int size = references.length;
-
-			Vector successfulMatches = new Vector(size);
-
-			for (int i = 0; i < size; i++) {
-				ServiceReference driver = references[i];
-
-				if (exclude.contains(driver)) {
-					if (Activator.DEBUG) {
-						log.log(driver, LogService.LOG_DEBUG, this + ": Driver match excluded: " + drivers.get(driver)); //$NON-NLS-1$
-					}
-				} else {
-					if (Activator.DEBUG) {
-						log.log(driver, LogService.LOG_DEBUG, this + ": Driver match called: " + drivers.get(driver)); //$NON-NLS-1$
-					}
-
-					Match match = getMatch(driver, device);
-
-					if (match == null) {
-						Driver service = (Driver) getService(driver);
-
-						if (service == null) {
-							continue;
-						}
-
-						int matchValue = Device.MATCH_NONE;
-
-						try {
-							matchValue = service.match(device);
-						} catch (Throwable t) {
-							log.log(driver, LogService.LOG_ERROR, DeviceMsg.Driver_error_during_match, t);
-
-							continue;
-						}
-
-						if (Activator.DEBUG) {
-							log.log(driver, LogService.LOG_DEBUG, this + ": Driver match value: " + matchValue); //$NON-NLS-1$
-						}
-
-						match = new Match(driver, matchValue);
-
-						storeMatch(driver, device, match);
-					}
-
-					if (match.getMatchValue() > Device.MATCH_NONE) {
-						successfulMatches.addElement(match);
-					}
-				}
-			}
-
-			size = successfulMatches.size();
-
-			if (size > 0) {
-				Match[] matchArray = new Match[size];
-				successfulMatches.copyInto(matchArray);
-
-				return manager.selectors.select(device, matchArray);
-			}
-		}
-
-		return null;
-	}
-
-	public Match getMatch(ServiceReference driver, ServiceReference device) {
-		String driverid = getDriverID(driver);
-
-		Hashtable driverMatches = (Hashtable) matches.get(driverid);
-
-		if (driverMatches == null) {
-			return null;
-		}
-
-		return (Match) driverMatches.get(device);
-	}
-
-	public void storeMatch(ServiceReference driver, ServiceReference device, Match match) {
-		String driverid = getDriverID(driver);
-
-		Hashtable driverMatches = (Hashtable) matches.get(driverid);
-
-		if (driverMatches == null) {
-			driverMatches = new Hashtable(37);
-
-			matches.put(driverid, driverMatches);
-		}
-
-		driverMatches.put(device, match);
-	}
-
-	/**
-	 * Attempt to attach the driver to the device. If the driver
-	 * refers, add the referred driver to the driver list.
-	 *
-	 * @param driver Driver to attach
-	 * @param device Device to be attached
-	 * @return true is the Driver successfully attached.
-	 */
-	public boolean attach(ServiceReference driver, ServiceReference device, Vector exclude) {
-		if (Activator.DEBUG) {
-			log.log(driver, LogService.LOG_DEBUG, this + ": Driver attach called: " + drivers.get(driver)); //$NON-NLS-1$
-		}
-
-		Driver service = (Driver) getService(driver);
-
-		if (service != null) {
-			String referral = getReferral(driver, device);
-
-			if (referral == null) {
-				try {
-					referral = service.attach(device);
-				} catch (Throwable t) {
-					log.log(driver, LogService.LOG_ERROR, DeviceMsg.Driver_error_during_attach, t);
-
-					exclude.addElement(driver);
-
-					return (false);
-				}
-
-				storeReferral(driver, device, (referral == null) ? "" : referral); //$NON-NLS-1$
-			} else {
-				if (referral.length() == 0) {
-					referral = null;
-				}
-			}
-
-			if (referral == null) {
-				log.log(device, LogService.LOG_INFO, NLS.bind(DeviceMsg.Device_attached_by_DRIVER_ID, drivers.get(driver)));
-
-				manager.locators.usingDriverBundle(driver.getBundle());
-
-				return (true);
-			}
-
-			log.log(device, LogService.LOG_INFO, NLS.bind(DeviceMsg.Device_referred_to, referral));
-			manager.locators.loadDriver(referral, this);
-		}
-
-		exclude.addElement(driver);
-
-		return (false);
-	}
-
-	public String getReferral(ServiceReference driver, ServiceReference device) {
-		String driverid = getDriverID(driver);
-
-		Hashtable driverReferrals = (Hashtable) referrals.get(driverid);
-
-		if (driverReferrals == null) {
-			return null;
-		}
-
-		return (String) driverReferrals.get(device);
-	}
-
-	public void storeReferral(ServiceReference driver, ServiceReference device, String referral) {
-		String driverid = getDriverID(driver);
-
-		Hashtable driverReferrals = (Hashtable) referrals.get(driverid);
-
-		if (driverReferrals == null) {
-			driverReferrals = new Hashtable(37);
-
-			referrals.put(driverid, driverReferrals);
-		}
-
-		driverReferrals.put(device, referral);
-	}
-
-	public String toString() {
-		return "DriverTracker"; //$NON-NLS-1$
-	}
-
-	public class DriverUpdate implements Runnable, ServiceListener, BundleListener {
-		private Activator manager;
-		private Bundle bundle;
-		private BundleContext context;
-
-		/** if false the thread must terminate */
-		private volatile boolean running;
-
-		private long updatewait;
-
-		DriverUpdate(Bundle bundle, Activator manager) {
-			this.manager = manager;
-			this.bundle = bundle;
-
-			context = manager.context;
-			updatewait = manager.updatewait;
-			running = true;
-
-			context.addBundleListener(this);
-			try {
-				context.addServiceListener(this, manager.driverFilter.toString());
-			} catch (InvalidSyntaxException e) {
-				/* this should not happen */
-			}
-		}
-
-		public void run() {
-			// 1. Wait for some time
-			// 2. if bundle registers Driver; terminate
-			// 3. if bundle uninstalls; cancel wait
-			// 4. manager.refineIdleDevices()
-
-			try {
-				if (updatewait > 0) {
-					synchronized (this) {
-						wait(updatewait);
-					}
-				}
-			} catch (InterruptedException e) {
-			}
-
-			context.removeServiceListener(this);
-			context.removeBundleListener(this);
-
-			if (running) {
-				manager.refineIdleDevices();
-			}
-		}
-
-		public void serviceChanged(ServiceEvent event) {
-			if ((event.getType() == ServiceEvent.REGISTERED) && bundle.equals(event.getServiceReference().getBundle())) {
-				context.removeServiceListener(this);
-
-				running = false; /* cancel */
-
-				/* should probably interrupt waiting thread here */
-			}
-		}
-
-		public void bundleChanged(BundleEvent event) {
-			if ((event.getType() == Bundle.UNINSTALLED) && bundle.equals(event.getBundle())) {
-				context.removeBundleListener(this);
-
-				updatewait = 0; /* avoid wait */
-
-				/* should probably interrupt waiting thread here */
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/ExternalMessages.properties b/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/ExternalMessages.properties
deleted file mode 100644
index 4bdd34b..0000000
--- a/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/ExternalMessages.properties
+++ /dev/null
@@ -1,31 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# NLS_MESSAGEFORMAT_ALL 
-DeviceManager_started=DeviceManager started
-Device_service_unregistered=Device service unregistered
-Device_noDriverFound_called=No matching driver found for device
-Multiple_Driver_services_with_the_same_DRIVER_ID=Multiple Driver services with the same DRIVER_ID: {0}
-DeviceManager_Update_Wait=DeviceManager Update Wait
-Driver_service_has_no_DRIVER_ID_property=Driver service has no DRIVER_ID property. Using bundle location as DRIVER_ID.
-Device_attached_by_DRIVER_ID=Device attached by DRIVER_ID={0}
-Device_referred_to=Device referred to {0}
-Unable_to_create_Filter_for_DeviceManager=Unable to create Filter for DeviceManager
-DeviceManager_has_thrown_an_error=DeviceManager has thrown an error
-Device_noDriverFound_error=Device noDriverFound error
-DriverLocator_unable_to_load_driver=DriverLocator unable to load driver: {0}
-DriverLocator_error_calling_findDrivers=DriverLocator error calling findDrivers
-Unable_to_install_or_start_driver_bundle=Unable to install or start driver bundle: {0}
-Unable_to_uninstall_driver_bundle=Unable to uninstall driver bundle
-Unable_to_uninstall_driver_bundle_number=Unable to uninstall driver bundle: {0}
-DriverSelector_error_during_match=DriverSelector error during match
-Driver_service_has_no_DRIVER_ID=Driver service has no DRIVER_ID property. Using bundle location as DRIVER_ID.
-Driver_error_during_match=Driver error during match
-Driver_error_during_attach=Driver error during attach
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/LogMessages.properties b/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/LogMessages.properties
deleted file mode 100644
index 20ad441..0000000
--- a/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/LogMessages.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# NLS_MESSAGEFORMAT_ALL 
-Unknown_Log_level=Unknown Log Level
-Info=Log Info
-Warning=Log Warning
-Error=Log Error
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/LogTracker.java b/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/LogTracker.java
deleted file mode 100644
index 25debd0..0000000
--- a/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/LogTracker.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 1998, 2005 IBM Corporation.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.equinox.device;
-
-import java.io.PrintStream;
-import java.text.DateFormat;
-import java.util.Calendar;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-import org.osgi.service.log.LogService;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * LogTracker class. This class encapsulates the LogService
- * and handles all issues such as the service coming and going.
- */
-
-public class LogTracker extends ServiceTracker implements LogService {
-	/** LogService interface class name */
-	protected final static String clazz = "org.osgi.service.log.LogService"; //$NON-NLS-1$
-
-	/** PrintStream to use if LogService is unavailable */
-	protected PrintStream out;
-
-	/** Calendar and DateFormat to user if LogService is unavailable */
-	private static Calendar calendar;
-	private static DateFormat dateFormat;
-	private String timestamp;
-
-	/**
-	 * Create new LogTracker.
-	 *
-	 * @param context BundleContext of parent bundle.
-	 * @param out Default PrintStream to use if LogService is unavailable.
-	 */
-	public LogTracker(BundleContext context, PrintStream out) {
-		super(context, clazz, null);
-		this.out = out;
-		calendar = Calendar.getInstance();
-		dateFormat = DateFormat.getDateTimeInstance();
-		open();
-	}
-
-	/*
-	 * ----------------------------------------------------------------------
-	 *      LogService Interface implementation
-	 * ----------------------------------------------------------------------
-	 */
-
-	public void log(int level, String message) {
-		log(null, level, message, null);
-	}
-
-	public void log(int level, String message, Throwable exception) {
-		log(null, level, message, exception);
-	}
-
-	public void log(ServiceReference reference, int level, String message) {
-		log(reference, level, message, null);
-	}
-
-	public synchronized void log(ServiceReference reference, int level, String message, Throwable exception) {
-		ServiceReference[] references = getServiceReferences();
-
-		if (references != null) {
-			int size = references.length;
-
-			for (int i = 0; i < size; i++) {
-				LogService service = (LogService) getService(references[i]);
-				if (service != null) {
-					try {
-						service.log(reference, level, message, exception);
-					} catch (Exception e) {
-					}
-				}
-			}
-
-			return;
-		}
-
-		noLogService(level, message, exception, reference);
-	}
-
-	/**
-	 * The LogService is not available so we write the message to a PrintStream.
-	 *
-	 * @param level Logging level
-	 * @param message Log message.
-	 * @param throwable Log exception or null if none.
-	 * @param reference ServiceReference associated with message or null if none.
-	 */
-	protected void noLogService(int level, String message, Throwable throwable, ServiceReference reference) {
-		if (out != null) {
-			synchronized (out) {
-				// Bug #113286.  If no log service present and messages are being
-				// printed to stdout, prepend message with a timestamp.
-				timestamp = dateFormat.format(calendar.getTime());
-				out.print(timestamp + " "); //$NON-NLS-1$
-
-				switch (level) {
-					case LOG_DEBUG : {
-						out.print("Debug: "); //$NON-NLS-1$
-
-						break;
-					}
-					case LOG_INFO : {
-						out.print(LogTrackerMsg.Info); 
-
-						break;
-					}
-					case LOG_WARNING : {
-						out.print(LogTrackerMsg.Warning);
-
-						break;
-					}
-					case LOG_ERROR : {
-						out.print(LogTrackerMsg.Error);
-
-						break;
-					}
-					default : {
-						out.print("["); //$NON-NLS-1$
-						out.print(LogTrackerMsg.Unknown_Log_level);         
-						out.print("]: "); //$NON-NLS-1$
-
-						break;
-					}
-				}
-
-				out.println(message);
-
-				if (reference != null) {
-					out.println(reference);
-				}
-
-				if (throwable != null) {
-					throwable.printStackTrace(out);
-				}
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/LogTrackerMsg.java b/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/LogTrackerMsg.java
deleted file mode 100644
index ad023bf..0000000
--- a/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/LogTrackerMsg.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.equinox.device;
-
-import org.eclipse.osgi.util.NLS;
-
-public class LogTrackerMsg extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.equinox.device.LogMessages"; //$NON-NLS-1$
-
-	public static String Unknown_Log_level;
-	public static String Info;
-	public static String Warning;
-	public static String Error;
-
-	static {
-		// initialize resource bundles
-		NLS.initializeMessages(BUNDLE_NAME, LogTrackerMsg.class);
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/Match.java b/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/Match.java
deleted file mode 100644
index 39482e8..0000000
--- a/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/Match.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.equinox.device;
-
-import org.osgi.framework.ServiceReference;
-
-/**
- * Match implementation class.
- *
- */
-public class Match implements org.osgi.service.device.Match {
-
-	private ServiceReference driver;
-	private int matchValue;
-
-	Match(ServiceReference driver, int matchValue) {
-		this.driver = driver;
-		this.matchValue = matchValue;
-	}
-
-	public ServiceReference getDriver() {
-		return driver;
-	}
-
-	public int getMatchValue() {
-		return matchValue;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/SecureAction.java b/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/SecureAction.java
deleted file mode 100644
index 218eed7..0000000
--- a/bundles/org.eclipse.equinox.device/src/org/eclipse/equinox/device/SecureAction.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.equinox.device;
-
-import java.security.*;
-
-/**
- * Utility class to execute common privileged code.
- */
-public class SecureAction {
-	// make sure we use the correct controlContext;
-	private AccessControlContext controlContext;
-
-	/**
-	 * Constructs a new SecureAction object.  The constructed SecureAction object 
-	 * uses the caller's AccessControlContext to perform security checks 
-	 */
-	public SecureAction() {
-		// save the control context to be used.
-		this.controlContext = AccessController.getContext();
-	}
-
-	/**
-	 * Creates a new Thread from a Runnable.  Same as calling
-	 * new Thread(target,name).
-	 * @param target the Runnable to create the Thread from.
-	 * @param name The name of the Thread.
-	 * @return The new Thread
-	 */
-	public Thread createThread(final Runnable target, final String name) {
-		if (System.getSecurityManager() == null)
-			return new Thread(target, name);
-		return (Thread) AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return new Thread(target, name);
-			}
-		}, controlContext);
-	}
-	
-	
-}
diff --git a/bundles/org.eclipse.equinox.ds/.classpath b/bundles/org.eclipse.equinox.ds/.classpath
deleted file mode 100644
index 751c8f2..0000000
--- a/bundles/org.eclipse.equinox.ds/.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.equinox.ds/.cvsignore b/bundles/org.eclipse.equinox.ds/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/bundles/org.eclipse.equinox.ds/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/bundles/org.eclipse.equinox.ds/.project b/bundles/org.eclipse.equinox.ds/.project
deleted file mode 100644
index cdafa44..0000000
--- a/bundles/org.eclipse.equinox.ds/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.equinox.ds</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.equinox.ds/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.ds/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index f1a5108..0000000
--- a/bundles/org.eclipse.equinox.ds/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,49 +0,0 @@
-#Fri Dec 16 09:20:00 CST 2005
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-o